superbee 0.1.6 → 0.2.1-pre.2

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.
@@ -32,278 +32,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
32
32
  mod
33
33
  ));
34
34
 
35
- // ../../node_modules/kind-of/index.js
36
- var require_kind_of = __commonJS({
37
- "../../node_modules/kind-of/index.js"(exports2, module2) {
38
- var toString = Object.prototype.toString;
39
- module2.exports = function kindOf2(val) {
40
- if (val === void 0) return "undefined";
41
- if (val === null) return "null";
42
- var type = typeof val;
43
- if (type === "boolean") return "boolean";
44
- if (type === "string") return "string";
45
- if (type === "number") return "number";
46
- if (type === "symbol") return "symbol";
47
- if (type === "function") {
48
- return isGeneratorFn(val) ? "generatorfunction" : "function";
49
- }
50
- if (isArray(val)) return "array";
51
- if (isBuffer(val)) return "buffer";
52
- if (isArguments(val)) return "arguments";
53
- if (isDate(val)) return "date";
54
- if (isError(val)) return "error";
55
- if (isRegexp(val)) return "regexp";
56
- switch (ctorName(val)) {
57
- case "Symbol":
58
- return "symbol";
59
- case "Promise":
60
- return "promise";
61
- // Set, Map, WeakSet, WeakMap
62
- case "WeakMap":
63
- return "weakmap";
64
- case "WeakSet":
65
- return "weakset";
66
- case "Map":
67
- return "map";
68
- case "Set":
69
- return "set";
70
- // 8-bit typed arrays
71
- case "Int8Array":
72
- return "int8array";
73
- case "Uint8Array":
74
- return "uint8array";
75
- case "Uint8ClampedArray":
76
- return "uint8clampedarray";
77
- // 16-bit typed arrays
78
- case "Int16Array":
79
- return "int16array";
80
- case "Uint16Array":
81
- return "uint16array";
82
- // 32-bit typed arrays
83
- case "Int32Array":
84
- return "int32array";
85
- case "Uint32Array":
86
- return "uint32array";
87
- case "Float32Array":
88
- return "float32array";
89
- case "Float64Array":
90
- return "float64array";
91
- }
92
- if (isGeneratorObj(val)) {
93
- return "generator";
94
- }
95
- type = toString.call(val);
96
- switch (type) {
97
- case "[object Object]":
98
- return "object";
99
- // iterators
100
- case "[object Map Iterator]":
101
- return "mapiterator";
102
- case "[object Set Iterator]":
103
- return "setiterator";
104
- case "[object String Iterator]":
105
- return "stringiterator";
106
- case "[object Array Iterator]":
107
- return "arrayiterator";
108
- }
109
- return type.slice(8, -1).toLowerCase().replace(/\s/g, "");
110
- };
111
- function ctorName(val) {
112
- return typeof val.constructor === "function" ? val.constructor.name : null;
113
- }
114
- function isArray(val) {
115
- if (Array.isArray) return Array.isArray(val);
116
- return val instanceof Array;
117
- }
118
- function isError(val) {
119
- return val instanceof Error || typeof val.message === "string" && val.constructor && typeof val.constructor.stackTraceLimit === "number";
120
- }
121
- function isDate(val) {
122
- if (val instanceof Date) return true;
123
- return typeof val.toDateString === "function" && typeof val.getDate === "function" && typeof val.setDate === "function";
124
- }
125
- function isRegexp(val) {
126
- if (val instanceof RegExp) return true;
127
- return typeof val.flags === "string" && typeof val.ignoreCase === "boolean" && typeof val.multiline === "boolean" && typeof val.global === "boolean";
128
- }
129
- function isGeneratorFn(name, val) {
130
- return ctorName(name) === "GeneratorFunction";
131
- }
132
- function isGeneratorObj(val) {
133
- return typeof val.throw === "function" && typeof val.return === "function" && typeof val.next === "function";
134
- }
135
- function isArguments(val) {
136
- try {
137
- if (typeof val.length === "number" && typeof val.callee === "function") {
138
- return true;
139
- }
140
- } catch (err) {
141
- if (err.message.indexOf("callee") !== -1) {
142
- return true;
143
- }
144
- }
145
- return false;
146
- }
147
- function isBuffer(val) {
148
- if (val.constructor && typeof val.constructor.isBuffer === "function") {
149
- return val.constructor.isBuffer(val);
150
- }
151
- return false;
152
- }
153
- }
154
- });
155
-
156
- // ../../node_modules/is-extendable/index.js
157
- var require_is_extendable = __commonJS({
158
- "../../node_modules/is-extendable/index.js"(exports2, module2) {
159
- "use strict";
160
- module2.exports = function isExtendable(val) {
161
- return typeof val !== "undefined" && val !== null && (typeof val === "object" || typeof val === "function");
162
- };
163
- }
164
- });
165
-
166
- // ../../node_modules/extend-shallow/index.js
167
- var require_extend_shallow = __commonJS({
168
- "../../node_modules/extend-shallow/index.js"(exports2, module2) {
169
- "use strict";
170
- var isObject2 = require_is_extendable();
171
- module2.exports = function extend(o) {
172
- if (!isObject2(o)) {
173
- o = {};
174
- }
175
- var len = arguments.length;
176
- for (var i = 1; i < len; i++) {
177
- var obj = arguments[i];
178
- if (isObject2(obj)) {
179
- assign(o, obj);
180
- }
181
- }
182
- return o;
183
- };
184
- function assign(a, b) {
185
- for (var key in b) {
186
- if (hasOwn2(b, key)) {
187
- a[key] = b[key];
188
- }
189
- }
190
- }
191
- function hasOwn2(obj, key) {
192
- return Object.prototype.hasOwnProperty.call(obj, key);
193
- }
194
- }
195
- });
196
-
197
- // ../../node_modules/section-matter/index.js
198
- var require_section_matter = __commonJS({
199
- "../../node_modules/section-matter/index.js"(exports2, module2) {
200
- "use strict";
201
- var typeOf = require_kind_of();
202
- var extend = require_extend_shallow();
203
- module2.exports = function(input, options2) {
204
- if (typeof options2 === "function") {
205
- options2 = { parse: options2 };
206
- }
207
- var file = toObject(input);
208
- var defaults = { section_delimiter: "---", parse: identity };
209
- var opts = extend({}, defaults, options2);
210
- var delim = opts.section_delimiter;
211
- var lines = file.content.split(/\r?\n/);
212
- var sections = null;
213
- var section = createSection();
214
- var content = [];
215
- var stack = [];
216
- function initSections(val) {
217
- file.content = val;
218
- sections = [];
219
- content = [];
220
- }
221
- function closeSection(val) {
222
- if (stack.length) {
223
- section.key = getKey(stack[0], delim);
224
- section.content = val;
225
- opts.parse(section, sections);
226
- sections.push(section);
227
- section = createSection();
228
- content = [];
229
- stack = [];
230
- }
231
- }
232
- for (var i = 0; i < lines.length; i++) {
233
- var line = lines[i];
234
- var len = stack.length;
235
- var ln = line.trim();
236
- if (isDelimiter(ln, delim)) {
237
- if (ln.length === 3 && i !== 0) {
238
- if (len === 0 || len === 2) {
239
- content.push(line);
240
- continue;
241
- }
242
- stack.push(ln);
243
- section.data = content.join("\n");
244
- content = [];
245
- continue;
246
- }
247
- if (sections === null) {
248
- initSections(content.join("\n"));
249
- }
250
- if (len === 2) {
251
- closeSection(content.join("\n"));
252
- }
253
- stack.push(ln);
254
- continue;
255
- }
256
- content.push(line);
257
- }
258
- if (sections === null) {
259
- initSections(content.join("\n"));
260
- } else {
261
- closeSection(content.join("\n"));
262
- }
263
- file.sections = sections;
264
- return file;
265
- };
266
- function isDelimiter(line, delim) {
267
- if (line.slice(0, delim.length) !== delim) {
268
- return false;
269
- }
270
- if (line.charAt(delim.length + 1) === delim.slice(-1)) {
271
- return false;
272
- }
273
- return true;
274
- }
275
- function toObject(input) {
276
- if (typeOf(input) !== "object") {
277
- input = { content: input };
278
- }
279
- if (typeof input.content !== "string" && !isBuffer(input.content)) {
280
- throw new TypeError("expected a buffer or string");
281
- }
282
- input.content = input.content.toString();
283
- input.sections = [];
284
- return input;
285
- }
286
- function getKey(val, delim) {
287
- return val ? val.slice(delim.length).trim() : "";
288
- }
289
- function createSection() {
290
- return { key: "", data: "", content: "" };
291
- }
292
- function identity(val) {
293
- return val;
294
- }
295
- function isBuffer(val) {
296
- if (val && val.constructor && typeof val.constructor.isBuffer === "function") {
297
- return val.constructor.isBuffer(val);
298
- }
299
- return false;
300
- }
301
- }
302
- });
303
-
304
35
  // ../../node_modules/js-yaml/lib/js-yaml/common.js
305
36
  var require_common = __commonJS({
306
- "../../node_modules/js-yaml/lib/js-yaml/common.js"(exports2, module2) {
37
+ "../../node_modules/js-yaml/lib/js-yaml/common.js"(exports, module) {
307
38
  "use strict";
308
39
  function isNothing(subject) {
309
40
  return typeof subject === "undefined" || subject === null;
@@ -337,18 +68,18 @@ var require_common = __commonJS({
337
68
  function isNegativeZero(number) {
338
69
  return number === 0 && Number.NEGATIVE_INFINITY === 1 / number;
339
70
  }
340
- module2.exports.isNothing = isNothing;
341
- module2.exports.isObject = isObject2;
342
- module2.exports.toArray = toArray;
343
- module2.exports.repeat = repeat;
344
- module2.exports.isNegativeZero = isNegativeZero;
345
- module2.exports.extend = extend;
71
+ module.exports.isNothing = isNothing;
72
+ module.exports.isObject = isObject2;
73
+ module.exports.toArray = toArray;
74
+ module.exports.repeat = repeat;
75
+ module.exports.isNegativeZero = isNegativeZero;
76
+ module.exports.extend = extend;
346
77
  }
347
78
  });
348
79
 
349
80
  // ../../node_modules/js-yaml/lib/js-yaml/exception.js
350
81
  var require_exception = __commonJS({
351
- "../../node_modules/js-yaml/lib/js-yaml/exception.js"(exports2, module2) {
82
+ "../../node_modules/js-yaml/lib/js-yaml/exception.js"(exports, module) {
352
83
  "use strict";
353
84
  function YAMLException(reason, mark) {
354
85
  Error.call(this);
@@ -372,13 +103,13 @@ var require_exception = __commonJS({
372
103
  }
373
104
  return result;
374
105
  };
375
- module2.exports = YAMLException;
106
+ module.exports = YAMLException;
376
107
  }
377
108
  });
378
109
 
379
110
  // ../../node_modules/js-yaml/lib/js-yaml/mark.js
380
111
  var require_mark = __commonJS({
381
- "../../node_modules/js-yaml/lib/js-yaml/mark.js"(exports2, module2) {
112
+ "../../node_modules/js-yaml/lib/js-yaml/mark.js"(exports, module) {
382
113
  "use strict";
383
114
  var common = require_common();
384
115
  function Mark(name, buffer, position, line, column) {
@@ -430,13 +161,13 @@ var require_mark = __commonJS({
430
161
  }
431
162
  return where;
432
163
  };
433
- module2.exports = Mark;
164
+ module.exports = Mark;
434
165
  }
435
166
  });
436
167
 
437
168
  // ../../node_modules/js-yaml/lib/js-yaml/type.js
438
169
  var require_type = __commonJS({
439
- "../../node_modules/js-yaml/lib/js-yaml/type.js"(exports2, module2) {
170
+ "../../node_modules/js-yaml/lib/js-yaml/type.js"(exports, module) {
440
171
  "use strict";
441
172
  var YAMLException = require_exception();
442
173
  var TYPE_CONSTRUCTOR_OPTIONS = [
@@ -465,37 +196,37 @@ var require_type = __commonJS({
465
196
  }
466
197
  return result;
467
198
  }
468
- function Type(tag, options2) {
469
- options2 = options2 || {};
470
- Object.keys(options2).forEach(function(name) {
199
+ function Type(tag, options) {
200
+ options = options || {};
201
+ Object.keys(options).forEach(function(name) {
471
202
  if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {
472
203
  throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.');
473
204
  }
474
205
  });
475
206
  this.tag = tag;
476
- this.kind = options2["kind"] || null;
477
- this.resolve = options2["resolve"] || function() {
207
+ this.kind = options["kind"] || null;
208
+ this.resolve = options["resolve"] || function() {
478
209
  return true;
479
210
  };
480
- this.construct = options2["construct"] || function(data) {
211
+ this.construct = options["construct"] || function(data) {
481
212
  return data;
482
213
  };
483
- this.instanceOf = options2["instanceOf"] || null;
484
- this.predicate = options2["predicate"] || null;
485
- this.represent = options2["represent"] || null;
486
- this.defaultStyle = options2["defaultStyle"] || null;
487
- this.styleAliases = compileStyleAliases(options2["styleAliases"] || null);
214
+ this.instanceOf = options["instanceOf"] || null;
215
+ this.predicate = options["predicate"] || null;
216
+ this.represent = options["represent"] || null;
217
+ this.defaultStyle = options["defaultStyle"] || null;
218
+ this.styleAliases = compileStyleAliases(options["styleAliases"] || null);
488
219
  if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {
489
220
  throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.');
490
221
  }
491
222
  }
492
- module2.exports = Type;
223
+ module.exports = Type;
493
224
  }
494
225
  });
495
226
 
496
227
  // ../../node_modules/js-yaml/lib/js-yaml/schema.js
497
228
  var require_schema = __commonJS({
498
- "../../node_modules/js-yaml/lib/js-yaml/schema.js"(exports2, module2) {
229
+ "../../node_modules/js-yaml/lib/js-yaml/schema.js"(exports, module) {
499
230
  "use strict";
500
231
  var common = require_common();
501
232
  var YAMLException = require_exception();
@@ -577,16 +308,16 @@ var require_schema = __commonJS({
577
308
  explicit: types
578
309
  });
579
310
  };
580
- module2.exports = Schema;
311
+ module.exports = Schema;
581
312
  }
582
313
  });
583
314
 
584
315
  // ../../node_modules/js-yaml/lib/js-yaml/type/str.js
585
316
  var require_str = __commonJS({
586
- "../../node_modules/js-yaml/lib/js-yaml/type/str.js"(exports2, module2) {
317
+ "../../node_modules/js-yaml/lib/js-yaml/type/str.js"(exports, module) {
587
318
  "use strict";
588
319
  var Type = require_type();
589
- module2.exports = new Type("tag:yaml.org,2002:str", {
320
+ module.exports = new Type("tag:yaml.org,2002:str", {
590
321
  kind: "scalar",
591
322
  construct: function(data) {
592
323
  return data !== null ? data : "";
@@ -597,10 +328,10 @@ var require_str = __commonJS({
597
328
 
598
329
  // ../../node_modules/js-yaml/lib/js-yaml/type/seq.js
599
330
  var require_seq = __commonJS({
600
- "../../node_modules/js-yaml/lib/js-yaml/type/seq.js"(exports2, module2) {
331
+ "../../node_modules/js-yaml/lib/js-yaml/type/seq.js"(exports, module) {
601
332
  "use strict";
602
333
  var Type = require_type();
603
- module2.exports = new Type("tag:yaml.org,2002:seq", {
334
+ module.exports = new Type("tag:yaml.org,2002:seq", {
604
335
  kind: "sequence",
605
336
  construct: function(data) {
606
337
  return data !== null ? data : [];
@@ -611,10 +342,10 @@ var require_seq = __commonJS({
611
342
 
612
343
  // ../../node_modules/js-yaml/lib/js-yaml/type/map.js
613
344
  var require_map = __commonJS({
614
- "../../node_modules/js-yaml/lib/js-yaml/type/map.js"(exports2, module2) {
345
+ "../../node_modules/js-yaml/lib/js-yaml/type/map.js"(exports, module) {
615
346
  "use strict";
616
347
  var Type = require_type();
617
- module2.exports = new Type("tag:yaml.org,2002:map", {
348
+ module.exports = new Type("tag:yaml.org,2002:map", {
618
349
  kind: "mapping",
619
350
  construct: function(data) {
620
351
  return data !== null ? data : {};
@@ -625,10 +356,10 @@ var require_map = __commonJS({
625
356
 
626
357
  // ../../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js
627
358
  var require_failsafe = __commonJS({
628
- "../../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js"(exports2, module2) {
359
+ "../../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js"(exports, module) {
629
360
  "use strict";
630
361
  var Schema = require_schema();
631
- module2.exports = new Schema({
362
+ module.exports = new Schema({
632
363
  explicit: [
633
364
  require_str(),
634
365
  require_seq(),
@@ -640,7 +371,7 @@ var require_failsafe = __commonJS({
640
371
 
641
372
  // ../../node_modules/js-yaml/lib/js-yaml/type/null.js
642
373
  var require_null = __commonJS({
643
- "../../node_modules/js-yaml/lib/js-yaml/type/null.js"(exports2, module2) {
374
+ "../../node_modules/js-yaml/lib/js-yaml/type/null.js"(exports, module) {
644
375
  "use strict";
645
376
  var Type = require_type();
646
377
  function resolveYamlNull(data) {
@@ -654,7 +385,7 @@ var require_null = __commonJS({
654
385
  function isNull(object) {
655
386
  return object === null;
656
387
  }
657
- module2.exports = new Type("tag:yaml.org,2002:null", {
388
+ module.exports = new Type("tag:yaml.org,2002:null", {
658
389
  kind: "scalar",
659
390
  resolve: resolveYamlNull,
660
391
  construct: constructYamlNull,
@@ -680,7 +411,7 @@ var require_null = __commonJS({
680
411
 
681
412
  // ../../node_modules/js-yaml/lib/js-yaml/type/bool.js
682
413
  var require_bool = __commonJS({
683
- "../../node_modules/js-yaml/lib/js-yaml/type/bool.js"(exports2, module2) {
414
+ "../../node_modules/js-yaml/lib/js-yaml/type/bool.js"(exports, module) {
684
415
  "use strict";
685
416
  var Type = require_type();
686
417
  function resolveYamlBoolean(data) {
@@ -694,7 +425,7 @@ var require_bool = __commonJS({
694
425
  function isBoolean(object) {
695
426
  return Object.prototype.toString.call(object) === "[object Boolean]";
696
427
  }
697
- module2.exports = new Type("tag:yaml.org,2002:bool", {
428
+ module.exports = new Type("tag:yaml.org,2002:bool", {
698
429
  kind: "scalar",
699
430
  resolve: resolveYamlBoolean,
700
431
  construct: constructYamlBoolean,
@@ -717,7 +448,7 @@ var require_bool = __commonJS({
717
448
 
718
449
  // ../../node_modules/js-yaml/lib/js-yaml/type/int.js
719
450
  var require_int = __commonJS({
720
- "../../node_modules/js-yaml/lib/js-yaml/type/int.js"(exports2, module2) {
451
+ "../../node_modules/js-yaml/lib/js-yaml/type/int.js"(exports, module) {
721
452
  "use strict";
722
453
  var common = require_common();
723
454
  var Type = require_type();
@@ -817,7 +548,7 @@ var require_int = __commonJS({
817
548
  function isInteger(object) {
818
549
  return Object.prototype.toString.call(object) === "[object Number]" && (object % 1 === 0 && !common.isNegativeZero(object));
819
550
  }
820
- module2.exports = new Type("tag:yaml.org,2002:int", {
551
+ module.exports = new Type("tag:yaml.org,2002:int", {
821
552
  kind: "scalar",
822
553
  resolve: resolveYamlInteger,
823
554
  construct: constructYamlInteger,
@@ -850,7 +581,7 @@ var require_int = __commonJS({
850
581
 
851
582
  // ../../node_modules/js-yaml/lib/js-yaml/type/float.js
852
583
  var require_float = __commonJS({
853
- "../../node_modules/js-yaml/lib/js-yaml/type/float.js"(exports2, module2) {
584
+ "../../node_modules/js-yaml/lib/js-yaml/type/float.js"(exports, module) {
854
585
  "use strict";
855
586
  var common = require_common();
856
587
  var Type = require_type();
@@ -932,7 +663,7 @@ var require_float = __commonJS({
932
663
  function isFloat(object) {
933
664
  return Object.prototype.toString.call(object) === "[object Number]" && (object % 1 !== 0 || common.isNegativeZero(object));
934
665
  }
935
- module2.exports = new Type("tag:yaml.org,2002:float", {
666
+ module.exports = new Type("tag:yaml.org,2002:float", {
936
667
  kind: "scalar",
937
668
  resolve: resolveYamlFloat,
938
669
  construct: constructYamlFloat,
@@ -945,10 +676,10 @@ var require_float = __commonJS({
945
676
 
946
677
  // ../../node_modules/js-yaml/lib/js-yaml/schema/json.js
947
678
  var require_json = __commonJS({
948
- "../../node_modules/js-yaml/lib/js-yaml/schema/json.js"(exports2, module2) {
679
+ "../../node_modules/js-yaml/lib/js-yaml/schema/json.js"(exports, module) {
949
680
  "use strict";
950
681
  var Schema = require_schema();
951
- module2.exports = new Schema({
682
+ module.exports = new Schema({
952
683
  include: [
953
684
  require_failsafe()
954
685
  ],
@@ -964,10 +695,10 @@ var require_json = __commonJS({
964
695
 
965
696
  // ../../node_modules/js-yaml/lib/js-yaml/schema/core.js
966
697
  var require_core = __commonJS({
967
- "../../node_modules/js-yaml/lib/js-yaml/schema/core.js"(exports2, module2) {
698
+ "../../node_modules/js-yaml/lib/js-yaml/schema/core.js"(exports, module) {
968
699
  "use strict";
969
700
  var Schema = require_schema();
970
- module2.exports = new Schema({
701
+ module.exports = new Schema({
971
702
  include: [
972
703
  require_json()
973
704
  ]
@@ -977,7 +708,7 @@ var require_core = __commonJS({
977
708
 
978
709
  // ../../node_modules/js-yaml/lib/js-yaml/type/timestamp.js
979
710
  var require_timestamp = __commonJS({
980
- "../../node_modules/js-yaml/lib/js-yaml/type/timestamp.js"(exports2, module2) {
711
+ "../../node_modules/js-yaml/lib/js-yaml/type/timestamp.js"(exports, module) {
981
712
  "use strict";
982
713
  var Type = require_type();
983
714
  var YAML_DATE_REGEXP = new RegExp(
@@ -1026,7 +757,7 @@ var require_timestamp = __commonJS({
1026
757
  function representYamlTimestamp(object) {
1027
758
  return object.toISOString();
1028
759
  }
1029
- module2.exports = new Type("tag:yaml.org,2002:timestamp", {
760
+ module.exports = new Type("tag:yaml.org,2002:timestamp", {
1030
761
  kind: "scalar",
1031
762
  resolve: resolveYamlTimestamp,
1032
763
  construct: constructYamlTimestamp,
@@ -1038,13 +769,13 @@ var require_timestamp = __commonJS({
1038
769
 
1039
770
  // ../../node_modules/js-yaml/lib/js-yaml/type/merge.js
1040
771
  var require_merge = __commonJS({
1041
- "../../node_modules/js-yaml/lib/js-yaml/type/merge.js"(exports2, module2) {
772
+ "../../node_modules/js-yaml/lib/js-yaml/type/merge.js"(exports, module) {
1042
773
  "use strict";
1043
774
  var Type = require_type();
1044
775
  function resolveYamlMerge(data) {
1045
776
  return data === "<<" || data === null;
1046
777
  }
1047
- module2.exports = new Type("tag:yaml.org,2002:merge", {
778
+ module.exports = new Type("tag:yaml.org,2002:merge", {
1048
779
  kind: "scalar",
1049
780
  resolve: resolveYamlMerge
1050
781
  });
@@ -1053,7 +784,7 @@ var require_merge = __commonJS({
1053
784
 
1054
785
  // ../../node_modules/js-yaml/lib/js-yaml/type/binary.js
1055
786
  var require_binary = __commonJS({
1056
- "../../node_modules/js-yaml/lib/js-yaml/type/binary.js"(exports2, module2) {
787
+ "../../node_modules/js-yaml/lib/js-yaml/type/binary.js"(exports, module) {
1057
788
  "use strict";
1058
789
  var NodeBuffer;
1059
790
  try {
@@ -1134,7 +865,7 @@ var require_binary = __commonJS({
1134
865
  function isBinary(object) {
1135
866
  return NodeBuffer && NodeBuffer.isBuffer(object);
1136
867
  }
1137
- module2.exports = new Type("tag:yaml.org,2002:binary", {
868
+ module.exports = new Type("tag:yaml.org,2002:binary", {
1138
869
  kind: "scalar",
1139
870
  resolve: resolveYamlBinary,
1140
871
  construct: constructYamlBinary,
@@ -1146,7 +877,7 @@ var require_binary = __commonJS({
1146
877
 
1147
878
  // ../../node_modules/js-yaml/lib/js-yaml/type/omap.js
1148
879
  var require_omap = __commonJS({
1149
- "../../node_modules/js-yaml/lib/js-yaml/type/omap.js"(exports2, module2) {
880
+ "../../node_modules/js-yaml/lib/js-yaml/type/omap.js"(exports, module) {
1150
881
  "use strict";
1151
882
  var Type = require_type();
1152
883
  var _hasOwnProperty = Object.prototype.hasOwnProperty;
@@ -1173,7 +904,7 @@ var require_omap = __commonJS({
1173
904
  function constructYamlOmap(data) {
1174
905
  return data !== null ? data : [];
1175
906
  }
1176
- module2.exports = new Type("tag:yaml.org,2002:omap", {
907
+ module.exports = new Type("tag:yaml.org,2002:omap", {
1177
908
  kind: "sequence",
1178
909
  resolve: resolveYamlOmap,
1179
910
  construct: constructYamlOmap
@@ -1183,7 +914,7 @@ var require_omap = __commonJS({
1183
914
 
1184
915
  // ../../node_modules/js-yaml/lib/js-yaml/type/pairs.js
1185
916
  var require_pairs = __commonJS({
1186
- "../../node_modules/js-yaml/lib/js-yaml/type/pairs.js"(exports2, module2) {
917
+ "../../node_modules/js-yaml/lib/js-yaml/type/pairs.js"(exports, module) {
1187
918
  "use strict";
1188
919
  var Type = require_type();
1189
920
  var _toString = Object.prototype.toString;
@@ -1211,7 +942,7 @@ var require_pairs = __commonJS({
1211
942
  }
1212
943
  return result;
1213
944
  }
1214
- module2.exports = new Type("tag:yaml.org,2002:pairs", {
945
+ module.exports = new Type("tag:yaml.org,2002:pairs", {
1215
946
  kind: "sequence",
1216
947
  resolve: resolveYamlPairs,
1217
948
  construct: constructYamlPairs
@@ -1221,7 +952,7 @@ var require_pairs = __commonJS({
1221
952
 
1222
953
  // ../../node_modules/js-yaml/lib/js-yaml/type/set.js
1223
954
  var require_set = __commonJS({
1224
- "../../node_modules/js-yaml/lib/js-yaml/type/set.js"(exports2, module2) {
955
+ "../../node_modules/js-yaml/lib/js-yaml/type/set.js"(exports, module) {
1225
956
  "use strict";
1226
957
  var Type = require_type();
1227
958
  var _hasOwnProperty = Object.prototype.hasOwnProperty;
@@ -1238,7 +969,7 @@ var require_set = __commonJS({
1238
969
  function constructYamlSet(data) {
1239
970
  return data !== null ? data : {};
1240
971
  }
1241
- module2.exports = new Type("tag:yaml.org,2002:set", {
972
+ module.exports = new Type("tag:yaml.org,2002:set", {
1242
973
  kind: "mapping",
1243
974
  resolve: resolveYamlSet,
1244
975
  construct: constructYamlSet
@@ -1248,10 +979,10 @@ var require_set = __commonJS({
1248
979
 
1249
980
  // ../../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js
1250
981
  var require_default_safe = __commonJS({
1251
- "../../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js"(exports2, module2) {
982
+ "../../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js"(exports, module) {
1252
983
  "use strict";
1253
984
  var Schema = require_schema();
1254
- module2.exports = new Schema({
985
+ module.exports = new Schema({
1255
986
  include: [
1256
987
  require_core()
1257
988
  ],
@@ -1271,7 +1002,7 @@ var require_default_safe = __commonJS({
1271
1002
 
1272
1003
  // ../../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js
1273
1004
  var require_undefined = __commonJS({
1274
- "../../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js"(exports2, module2) {
1005
+ "../../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js"(exports, module) {
1275
1006
  "use strict";
1276
1007
  var Type = require_type();
1277
1008
  function resolveJavascriptUndefined() {
@@ -1286,7 +1017,7 @@ var require_undefined = __commonJS({
1286
1017
  function isUndefined(object) {
1287
1018
  return typeof object === "undefined";
1288
1019
  }
1289
- module2.exports = new Type("tag:yaml.org,2002:js/undefined", {
1020
+ module.exports = new Type("tag:yaml.org,2002:js/undefined", {
1290
1021
  kind: "scalar",
1291
1022
  resolve: resolveJavascriptUndefined,
1292
1023
  construct: constructJavascriptUndefined,
@@ -1298,7 +1029,7 @@ var require_undefined = __commonJS({
1298
1029
 
1299
1030
  // ../../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js
1300
1031
  var require_regexp = __commonJS({
1301
- "../../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js"(exports2, module2) {
1032
+ "../../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js"(exports, module) {
1302
1033
  "use strict";
1303
1034
  var Type = require_type();
1304
1035
  function resolveJavascriptRegExp(data) {
@@ -1330,7 +1061,7 @@ var require_regexp = __commonJS({
1330
1061
  function isRegExp(object) {
1331
1062
  return Object.prototype.toString.call(object) === "[object RegExp]";
1332
1063
  }
1333
- module2.exports = new Type("tag:yaml.org,2002:js/regexp", {
1064
+ module.exports = new Type("tag:yaml.org,2002:js/regexp", {
1334
1065
  kind: "scalar",
1335
1066
  resolve: resolveJavascriptRegExp,
1336
1067
  construct: constructJavascriptRegExp,
@@ -1342,7 +1073,7 @@ var require_regexp = __commonJS({
1342
1073
 
1343
1074
  // ../../node_modules/js-yaml/lib/js-yaml/type/js/function.js
1344
1075
  var require_function = __commonJS({
1345
- "../../node_modules/js-yaml/lib/js-yaml/type/js/function.js"(exports2, module2) {
1076
+ "../../node_modules/js-yaml/lib/js-yaml/type/js/function.js"(exports, module) {
1346
1077
  "use strict";
1347
1078
  var esprima;
1348
1079
  try {
@@ -1385,7 +1116,7 @@ var require_function = __commonJS({
1385
1116
  function isFunction(object) {
1386
1117
  return Object.prototype.toString.call(object) === "[object Function]";
1387
1118
  }
1388
- module2.exports = new Type("tag:yaml.org,2002:js/function", {
1119
+ module.exports = new Type("tag:yaml.org,2002:js/function", {
1389
1120
  kind: "scalar",
1390
1121
  resolve: resolveJavascriptFunction,
1391
1122
  construct: constructJavascriptFunction,
@@ -1397,10 +1128,10 @@ var require_function = __commonJS({
1397
1128
 
1398
1129
  // ../../node_modules/js-yaml/lib/js-yaml/schema/default_full.js
1399
1130
  var require_default_full = __commonJS({
1400
- "../../node_modules/js-yaml/lib/js-yaml/schema/default_full.js"(exports2, module2) {
1131
+ "../../node_modules/js-yaml/lib/js-yaml/schema/default_full.js"(exports, module) {
1401
1132
  "use strict";
1402
1133
  var Schema = require_schema();
1403
- module2.exports = Schema.DEFAULT = new Schema({
1134
+ module.exports = Schema.DEFAULT = new Schema({
1404
1135
  include: [
1405
1136
  require_default_safe()
1406
1137
  ],
@@ -1415,7 +1146,7 @@ var require_default_full = __commonJS({
1415
1146
 
1416
1147
  // ../../node_modules/js-yaml/lib/js-yaml/loader.js
1417
1148
  var require_loader = __commonJS({
1418
- "../../node_modules/js-yaml/lib/js-yaml/loader.js"(exports2, module2) {
1149
+ "../../node_modules/js-yaml/lib/js-yaml/loader.js"(exports, module) {
1419
1150
  "use strict";
1420
1151
  var common = require_common();
1421
1152
  var YAMLException = require_exception();
@@ -1510,15 +1241,15 @@ var require_loader = __commonJS({
1510
1241
  simpleEscapeMap[i] = simpleEscapeSequence(i);
1511
1242
  }
1512
1243
  var i;
1513
- function State(input, options2) {
1244
+ function State(input, options) {
1514
1245
  this.input = input;
1515
- this.filename = options2["filename"] || null;
1516
- this.schema = options2["schema"] || DEFAULT_FULL_SCHEMA;
1517
- this.onWarning = options2["onWarning"] || null;
1518
- this.legacy = options2["legacy"] || false;
1519
- this.json = options2["json"] || false;
1520
- this.listener = options2["listener"] || null;
1521
- this.maxTotalMergeKeys = typeof options2["maxTotalMergeKeys"] === "number" ? options2["maxTotalMergeKeys"] : 1e4;
1246
+ this.filename = options["filename"] || null;
1247
+ this.schema = options["schema"] || DEFAULT_FULL_SCHEMA;
1248
+ this.onWarning = options["onWarning"] || null;
1249
+ this.legacy = options["legacy"] || false;
1250
+ this.json = options["json"] || false;
1251
+ this.listener = options["listener"] || null;
1252
+ this.maxTotalMergeKeys = typeof options["maxTotalMergeKeys"] === "number" ? options["maxTotalMergeKeys"] : 1e4;
1522
1253
  this.implicitTypes = this.schema.compiledImplicit;
1523
1254
  this.typeMap = this.schema.compiledTypeMap;
1524
1255
  this.length = input.length;
@@ -2479,9 +2210,9 @@ var require_loader = __commonJS({
2479
2210
  return;
2480
2211
  }
2481
2212
  }
2482
- function loadDocuments(input, options2) {
2213
+ function loadDocuments(input, options) {
2483
2214
  input = String(input);
2484
- options2 = options2 || {};
2215
+ options = options || {};
2485
2216
  if (input.length !== 0) {
2486
2217
  if (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) {
2487
2218
  input += "\n";
@@ -2490,7 +2221,7 @@ var require_loader = __commonJS({
2490
2221
  input = input.slice(1);
2491
2222
  }
2492
2223
  }
2493
- var state = new State(input, options2);
2224
+ var state = new State(input, options);
2494
2225
  var nullpos = input.indexOf("\0");
2495
2226
  if (nullpos !== -1) {
2496
2227
  state.position = nullpos;
@@ -2506,12 +2237,12 @@ var require_loader = __commonJS({
2506
2237
  }
2507
2238
  return state.documents;
2508
2239
  }
2509
- function loadAll(input, iterator, options2) {
2510
- if (iterator !== null && typeof iterator === "object" && typeof options2 === "undefined") {
2511
- options2 = iterator;
2240
+ function loadAll(input, iterator, options) {
2241
+ if (iterator !== null && typeof iterator === "object" && typeof options === "undefined") {
2242
+ options = iterator;
2512
2243
  iterator = null;
2513
2244
  }
2514
- var documents = loadDocuments(input, options2);
2245
+ var documents = loadDocuments(input, options);
2515
2246
  if (typeof iterator !== "function") {
2516
2247
  return documents;
2517
2248
  }
@@ -2519,8 +2250,8 @@ var require_loader = __commonJS({
2519
2250
  iterator(documents[index]);
2520
2251
  }
2521
2252
  }
2522
- function load(input, options2) {
2523
- var documents = loadDocuments(input, options2);
2253
+ function load(input, options) {
2254
+ var documents = loadDocuments(input, options);
2524
2255
  if (documents.length === 0) {
2525
2256
  return void 0;
2526
2257
  } else if (documents.length === 1) {
@@ -2528,26 +2259,26 @@ var require_loader = __commonJS({
2528
2259
  }
2529
2260
  throw new YAMLException("expected a single document in the stream, but found more");
2530
2261
  }
2531
- function safeLoadAll(input, iterator, options2) {
2532
- if (typeof iterator === "object" && iterator !== null && typeof options2 === "undefined") {
2533
- options2 = iterator;
2262
+ function safeLoadAll(input, iterator, options) {
2263
+ if (typeof iterator === "object" && iterator !== null && typeof options === "undefined") {
2264
+ options = iterator;
2534
2265
  iterator = null;
2535
2266
  }
2536
- return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options2));
2267
+ return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
2537
2268
  }
2538
- function safeLoad(input, options2) {
2539
- return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options2));
2269
+ function safeLoad(input, options) {
2270
+ return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
2540
2271
  }
2541
- module2.exports.loadAll = loadAll;
2542
- module2.exports.load = load;
2543
- module2.exports.safeLoadAll = safeLoadAll;
2544
- module2.exports.safeLoad = safeLoad;
2272
+ module.exports.loadAll = loadAll;
2273
+ module.exports.load = load;
2274
+ module.exports.safeLoadAll = safeLoadAll;
2275
+ module.exports.safeLoad = safeLoad;
2545
2276
  }
2546
2277
  });
2547
2278
 
2548
2279
  // ../../node_modules/js-yaml/lib/js-yaml/dumper.js
2549
2280
  var require_dumper = __commonJS({
2550
- "../../node_modules/js-yaml/lib/js-yaml/dumper.js"(exports2, module2) {
2281
+ "../../node_modules/js-yaml/lib/js-yaml/dumper.js"(exports, module) {
2551
2282
  "use strict";
2552
2283
  var common = require_common();
2553
2284
  var YAMLException = require_exception();
@@ -2649,18 +2380,18 @@ var require_dumper = __commonJS({
2649
2380
  }
2650
2381
  return "\\" + handle + common.repeat("0", length - string.length) + string;
2651
2382
  }
2652
- function State(options2) {
2653
- this.schema = options2["schema"] || DEFAULT_FULL_SCHEMA;
2654
- this.indent = Math.max(1, options2["indent"] || 2);
2655
- this.noArrayIndent = options2["noArrayIndent"] || false;
2656
- this.skipInvalid = options2["skipInvalid"] || false;
2657
- this.flowLevel = common.isNothing(options2["flowLevel"]) ? -1 : options2["flowLevel"];
2658
- this.styleMap = compileStyleMap(this.schema, options2["styles"] || null);
2659
- this.sortKeys = options2["sortKeys"] || false;
2660
- this.lineWidth = options2["lineWidth"] || 80;
2661
- this.noRefs = options2["noRefs"] || false;
2662
- this.noCompatMode = options2["noCompatMode"] || false;
2663
- this.condenseFlow = options2["condenseFlow"] || false;
2383
+ function State(options) {
2384
+ this.schema = options["schema"] || DEFAULT_FULL_SCHEMA;
2385
+ this.indent = Math.max(1, options["indent"] || 2);
2386
+ this.noArrayIndent = options["noArrayIndent"] || false;
2387
+ this.skipInvalid = options["skipInvalid"] || false;
2388
+ this.flowLevel = common.isNothing(options["flowLevel"]) ? -1 : options["flowLevel"];
2389
+ this.styleMap = compileStyleMap(this.schema, options["styles"] || null);
2390
+ this.sortKeys = options["sortKeys"] || false;
2391
+ this.lineWidth = options["lineWidth"] || 80;
2392
+ this.noRefs = options["noRefs"] || false;
2393
+ this.noCompatMode = options["noCompatMode"] || false;
2394
+ this.condenseFlow = options["condenseFlow"] || false;
2664
2395
  this.implicitTypes = this.schema.compiledImplicit;
2665
2396
  this.explicitTypes = this.schema.compiledExplicit;
2666
2397
  this.tag = null;
@@ -2687,11 +2418,11 @@ var require_dumper = __commonJS({
2687
2418
  function generateNextLine(state, level) {
2688
2419
  return "\n" + common.repeat(" ", state.indent * level);
2689
2420
  }
2690
- function testImplicitResolving(state, str2) {
2421
+ function testImplicitResolving(state, str) {
2691
2422
  var index, length, type;
2692
2423
  for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {
2693
2424
  type = state.implicitTypes[index];
2694
- if (type.resolve(str2)) {
2425
+ if (type.resolve(str)) {
2695
2426
  return true;
2696
2427
  }
2697
2428
  }
@@ -3078,24 +2809,24 @@ var require_dumper = __commonJS({
3078
2809
  }
3079
2810
  }
3080
2811
  }
3081
- function dump(input, options2) {
3082
- options2 = options2 || {};
3083
- var state = new State(options2);
2812
+ function dump(input, options) {
2813
+ options = options || {};
2814
+ var state = new State(options);
3084
2815
  if (!state.noRefs) getDuplicateReferences(input, state);
3085
2816
  if (writeNode(state, 0, input, true, true)) return state.dump + "\n";
3086
2817
  return "";
3087
2818
  }
3088
- function safeDump(input, options2) {
3089
- return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options2));
2819
+ function safeDump(input, options) {
2820
+ return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
3090
2821
  }
3091
- module2.exports.dump = dump;
3092
- module2.exports.safeDump = safeDump;
2822
+ module.exports.dump = dump;
2823
+ module.exports.safeDump = safeDump;
3093
2824
  }
3094
2825
  });
3095
2826
 
3096
2827
  // ../../node_modules/js-yaml/lib/js-yaml.js
3097
2828
  var require_js_yaml = __commonJS({
3098
- "../../node_modules/js-yaml/lib/js-yaml.js"(exports2, module2) {
2829
+ "../../node_modules/js-yaml/lib/js-yaml.js"(exports, module) {
3099
2830
  "use strict";
3100
2831
  var loader = require_loader();
3101
2832
  var dumper = require_dumper();
@@ -3104,438 +2835,46 @@ var require_js_yaml = __commonJS({
3104
2835
  throw new Error("Function " + name + " is deprecated and cannot be used.");
3105
2836
  };
3106
2837
  }
3107
- module2.exports.Type = require_type();
3108
- module2.exports.Schema = require_schema();
3109
- module2.exports.FAILSAFE_SCHEMA = require_failsafe();
3110
- module2.exports.JSON_SCHEMA = require_json();
3111
- module2.exports.CORE_SCHEMA = require_core();
3112
- module2.exports.DEFAULT_SAFE_SCHEMA = require_default_safe();
3113
- module2.exports.DEFAULT_FULL_SCHEMA = require_default_full();
3114
- module2.exports.load = loader.load;
3115
- module2.exports.loadAll = loader.loadAll;
3116
- module2.exports.safeLoad = loader.safeLoad;
3117
- module2.exports.safeLoadAll = loader.safeLoadAll;
3118
- module2.exports.dump = dumper.dump;
3119
- module2.exports.safeDump = dumper.safeDump;
3120
- module2.exports.YAMLException = require_exception();
3121
- module2.exports.MINIMAL_SCHEMA = require_failsafe();
3122
- module2.exports.SAFE_SCHEMA = require_default_safe();
3123
- module2.exports.DEFAULT_SCHEMA = require_default_full();
3124
- module2.exports.scan = deprecated("scan");
3125
- module2.exports.parse = deprecated("parse");
3126
- module2.exports.compose = deprecated("compose");
3127
- module2.exports.addConstructor = deprecated("addConstructor");
2838
+ module.exports.Type = require_type();
2839
+ module.exports.Schema = require_schema();
2840
+ module.exports.FAILSAFE_SCHEMA = require_failsafe();
2841
+ module.exports.JSON_SCHEMA = require_json();
2842
+ module.exports.CORE_SCHEMA = require_core();
2843
+ module.exports.DEFAULT_SAFE_SCHEMA = require_default_safe();
2844
+ module.exports.DEFAULT_FULL_SCHEMA = require_default_full();
2845
+ module.exports.load = loader.load;
2846
+ module.exports.loadAll = loader.loadAll;
2847
+ module.exports.safeLoad = loader.safeLoad;
2848
+ module.exports.safeLoadAll = loader.safeLoadAll;
2849
+ module.exports.dump = dumper.dump;
2850
+ module.exports.safeDump = dumper.safeDump;
2851
+ module.exports.YAMLException = require_exception();
2852
+ module.exports.MINIMAL_SCHEMA = require_failsafe();
2853
+ module.exports.SAFE_SCHEMA = require_default_safe();
2854
+ module.exports.DEFAULT_SCHEMA = require_default_full();
2855
+ module.exports.scan = deprecated("scan");
2856
+ module.exports.parse = deprecated("parse");
2857
+ module.exports.compose = deprecated("compose");
2858
+ module.exports.addConstructor = deprecated("addConstructor");
3128
2859
  }
3129
2860
  });
3130
2861
 
3131
2862
  // ../../node_modules/js-yaml/index.js
3132
2863
  var require_js_yaml2 = __commonJS({
3133
- "../../node_modules/js-yaml/index.js"(exports2, module2) {
3134
- "use strict";
3135
- var yaml4 = require_js_yaml();
3136
- module2.exports = yaml4;
3137
- }
3138
- });
3139
-
3140
- // ../../node_modules/gray-matter/lib/engines.js
3141
- var require_engines = __commonJS({
3142
- "../../node_modules/gray-matter/lib/engines.js"(exports, module) {
3143
- "use strict";
3144
- var yaml = require_js_yaml2();
3145
- var engines = exports = module.exports;
3146
- engines.yaml = {
3147
- parse: yaml.safeLoad.bind(yaml),
3148
- stringify: yaml.safeDump.bind(yaml)
3149
- };
3150
- engines.json = {
3151
- parse: JSON.parse.bind(JSON),
3152
- stringify: function(obj, options2) {
3153
- const opts = Object.assign({ replacer: null, space: 2 }, options2);
3154
- return JSON.stringify(obj, opts.replacer, opts.space);
3155
- }
3156
- };
3157
- engines.javascript = {
3158
- parse: function parse(str, options, wrap) {
3159
- try {
3160
- if (wrap !== false) {
3161
- str = "(function() {\nreturn " + str.trim() + ";\n}());";
3162
- }
3163
- return eval(str) || {};
3164
- } catch (err) {
3165
- if (wrap !== false && /(unexpected|identifier)/i.test(err.message)) {
3166
- return parse(str, options, false);
3167
- }
3168
- throw new SyntaxError(err);
3169
- }
3170
- },
3171
- stringify: function() {
3172
- throw new Error("stringifying JavaScript is not supported");
3173
- }
3174
- };
3175
- }
3176
- });
3177
-
3178
- // ../../node_modules/strip-bom-string/index.js
3179
- var require_strip_bom_string = __commonJS({
3180
- "../../node_modules/strip-bom-string/index.js"(exports2, module2) {
3181
- "use strict";
3182
- module2.exports = function(str2) {
3183
- if (typeof str2 === "string" && str2.charAt(0) === "\uFEFF") {
3184
- return str2.slice(1);
3185
- }
3186
- return str2;
3187
- };
3188
- }
3189
- });
3190
-
3191
- // ../../node_modules/gray-matter/lib/utils.js
3192
- var require_utils = __commonJS({
3193
- "../../node_modules/gray-matter/lib/utils.js"(exports2) {
3194
- "use strict";
3195
- var stripBom = require_strip_bom_string();
3196
- var typeOf = require_kind_of();
3197
- exports2.define = function(obj, key, val) {
3198
- Reflect.defineProperty(obj, key, {
3199
- enumerable: false,
3200
- configurable: true,
3201
- writable: true,
3202
- value: val
3203
- });
3204
- };
3205
- exports2.isBuffer = function(val) {
3206
- return typeOf(val) === "buffer";
3207
- };
3208
- exports2.isObject = function(val) {
3209
- return typeOf(val) === "object";
3210
- };
3211
- exports2.toBuffer = function(input) {
3212
- return typeof input === "string" ? Buffer.from(input) : input;
3213
- };
3214
- exports2.toString = function(input) {
3215
- if (exports2.isBuffer(input)) return stripBom(String(input));
3216
- if (typeof input !== "string") {
3217
- throw new TypeError("expected input to be a string or buffer");
3218
- }
3219
- return stripBom(input);
3220
- };
3221
- exports2.arrayify = function(val) {
3222
- return val ? Array.isArray(val) ? val : [val] : [];
3223
- };
3224
- exports2.startsWith = function(str2, substr, len) {
3225
- if (typeof len !== "number") len = substr.length;
3226
- return str2.slice(0, len) === substr;
3227
- };
3228
- }
3229
- });
3230
-
3231
- // ../../node_modules/gray-matter/lib/defaults.js
3232
- var require_defaults = __commonJS({
3233
- "../../node_modules/gray-matter/lib/defaults.js"(exports2, module2) {
3234
- "use strict";
3235
- var engines2 = require_engines();
3236
- var utils = require_utils();
3237
- module2.exports = function(options2) {
3238
- const opts = Object.assign({}, options2);
3239
- opts.delimiters = utils.arrayify(opts.delims || opts.delimiters || "---");
3240
- if (opts.delimiters.length === 1) {
3241
- opts.delimiters.push(opts.delimiters[0]);
3242
- }
3243
- opts.language = (opts.language || opts.lang || "yaml").toLowerCase();
3244
- opts.engines = Object.assign({}, engines2, opts.parsers, opts.engines);
3245
- return opts;
3246
- };
3247
- }
3248
- });
3249
-
3250
- // ../../node_modules/gray-matter/lib/engine.js
3251
- var require_engine = __commonJS({
3252
- "../../node_modules/gray-matter/lib/engine.js"(exports2, module2) {
3253
- "use strict";
3254
- module2.exports = function(name, options2) {
3255
- let engine = options2.engines[name] || options2.engines[aliase(name)];
3256
- if (typeof engine === "undefined") {
3257
- throw new Error('gray-matter engine "' + name + '" is not registered');
3258
- }
3259
- if (typeof engine === "function") {
3260
- engine = { parse: engine };
3261
- }
3262
- return engine;
3263
- };
3264
- function aliase(name) {
3265
- switch (name.toLowerCase()) {
3266
- case "js":
3267
- case "javascript":
3268
- return "javascript";
3269
- case "coffee":
3270
- case "coffeescript":
3271
- case "cson":
3272
- return "coffee";
3273
- case "yaml":
3274
- case "yml":
3275
- return "yaml";
3276
- default: {
3277
- return name;
3278
- }
3279
- }
3280
- }
3281
- }
3282
- });
3283
-
3284
- // ../../node_modules/gray-matter/lib/stringify.js
3285
- var require_stringify = __commonJS({
3286
- "../../node_modules/gray-matter/lib/stringify.js"(exports2, module2) {
3287
- "use strict";
3288
- var typeOf = require_kind_of();
3289
- var getEngine = require_engine();
3290
- var defaults = require_defaults();
3291
- module2.exports = function(file, data, options2) {
3292
- if (data == null && options2 == null) {
3293
- switch (typeOf(file)) {
3294
- case "object":
3295
- data = file.data;
3296
- options2 = {};
3297
- break;
3298
- case "string":
3299
- return file;
3300
- default: {
3301
- throw new TypeError("expected file to be a string or object");
3302
- }
3303
- }
3304
- }
3305
- const str2 = file.content;
3306
- const opts = defaults(options2);
3307
- if (data == null) {
3308
- if (!opts.data) return file;
3309
- data = opts.data;
3310
- }
3311
- const language = file.language || opts.language;
3312
- const engine = getEngine(language, opts);
3313
- if (typeof engine.stringify !== "function") {
3314
- throw new TypeError('expected "' + language + '.stringify" to be a function');
3315
- }
3316
- data = Object.assign({}, file.data, data);
3317
- const open = opts.delimiters[0];
3318
- const close = opts.delimiters[1];
3319
- const matter2 = engine.stringify(data, options2).trim();
3320
- let buf = "";
3321
- if (matter2 !== "{}") {
3322
- buf = newline(open) + newline(matter2) + newline(close);
3323
- }
3324
- if (typeof file.excerpt === "string" && file.excerpt !== "") {
3325
- if (str2.indexOf(file.excerpt.trim()) === -1) {
3326
- buf += newline(file.excerpt) + newline(close);
3327
- }
3328
- }
3329
- return buf + newline(str2);
3330
- };
3331
- function newline(str2) {
3332
- return str2.slice(-1) !== "\n" ? str2 + "\n" : str2;
3333
- }
3334
- }
3335
- });
3336
-
3337
- // ../../node_modules/gray-matter/lib/excerpt.js
3338
- var require_excerpt = __commonJS({
3339
- "../../node_modules/gray-matter/lib/excerpt.js"(exports2, module2) {
3340
- "use strict";
3341
- var defaults = require_defaults();
3342
- module2.exports = function(file, options2) {
3343
- const opts = defaults(options2);
3344
- if (file.data == null) {
3345
- file.data = {};
3346
- }
3347
- if (typeof opts.excerpt === "function") {
3348
- return opts.excerpt(file, opts);
3349
- }
3350
- const sep = file.data.excerpt_separator || opts.excerpt_separator;
3351
- if (sep == null && (opts.excerpt === false || opts.excerpt == null)) {
3352
- return file;
3353
- }
3354
- const delimiter = typeof opts.excerpt === "string" ? opts.excerpt : sep || opts.delimiters[0];
3355
- const idx = file.content.indexOf(delimiter);
3356
- if (idx !== -1) {
3357
- file.excerpt = file.content.slice(0, idx);
3358
- }
3359
- return file;
3360
- };
3361
- }
3362
- });
3363
-
3364
- // ../../node_modules/gray-matter/lib/to-file.js
3365
- var require_to_file = __commonJS({
3366
- "../../node_modules/gray-matter/lib/to-file.js"(exports2, module2) {
3367
- "use strict";
3368
- var typeOf = require_kind_of();
3369
- var stringify = require_stringify();
3370
- var utils = require_utils();
3371
- module2.exports = function(file) {
3372
- if (typeOf(file) !== "object") {
3373
- file = { content: file };
3374
- }
3375
- if (typeOf(file.data) !== "object") {
3376
- file.data = {};
3377
- }
3378
- if (file.contents && file.content == null) {
3379
- file.content = file.contents;
3380
- }
3381
- utils.define(file, "orig", utils.toBuffer(file.content));
3382
- utils.define(file, "language", file.language || "");
3383
- utils.define(file, "matter", file.matter || "");
3384
- utils.define(file, "stringify", function(data, options2) {
3385
- if (options2 && options2.language) {
3386
- file.language = options2.language;
3387
- }
3388
- return stringify(file, data, options2);
3389
- });
3390
- file.content = utils.toString(file.content);
3391
- file.isEmpty = false;
3392
- file.excerpt = "";
3393
- return file;
3394
- };
3395
- }
3396
- });
3397
-
3398
- // ../../node_modules/gray-matter/lib/parse.js
3399
- var require_parse = __commonJS({
3400
- "../../node_modules/gray-matter/lib/parse.js"(exports2, module2) {
3401
- "use strict";
3402
- var getEngine = require_engine();
3403
- var defaults = require_defaults();
3404
- module2.exports = function(language, str2, options2) {
3405
- const opts = defaults(options2);
3406
- const engine = getEngine(language, opts);
3407
- if (typeof engine.parse !== "function") {
3408
- throw new TypeError('expected "' + language + '.parse" to be a function');
3409
- }
3410
- return engine.parse(str2, opts);
3411
- };
3412
- }
3413
- });
3414
-
3415
- // ../../node_modules/gray-matter/index.js
3416
- var require_gray_matter = __commonJS({
3417
- "../../node_modules/gray-matter/index.js"(exports2, module2) {
2864
+ "../../node_modules/js-yaml/index.js"(exports, module) {
3418
2865
  "use strict";
3419
- var fs3 = __require("fs");
3420
- var sections = require_section_matter();
3421
- var defaults = require_defaults();
3422
- var stringify = require_stringify();
3423
- var excerpt = require_excerpt();
3424
- var engines2 = require_engines();
3425
- var toFile = require_to_file();
3426
- var parse2 = require_parse();
3427
- var utils = require_utils();
3428
- function matter2(input, options2) {
3429
- if (input === "") {
3430
- return { data: {}, content: input, excerpt: "", orig: input };
3431
- }
3432
- let file = toFile(input);
3433
- const cached = matter2.cache[file.content];
3434
- if (!options2) {
3435
- if (cached) {
3436
- file = Object.assign({}, cached);
3437
- file.orig = cached.orig;
3438
- return file;
3439
- }
3440
- matter2.cache[file.content] = file;
3441
- }
3442
- return parseMatter(file, options2);
3443
- }
3444
- function parseMatter(file, options2) {
3445
- const opts = defaults(options2);
3446
- const open = opts.delimiters[0];
3447
- const close = "\n" + opts.delimiters[1];
3448
- let str2 = file.content;
3449
- if (opts.language) {
3450
- file.language = opts.language;
3451
- }
3452
- const openLen = open.length;
3453
- if (!utils.startsWith(str2, open, openLen)) {
3454
- excerpt(file, opts);
3455
- return file;
3456
- }
3457
- if (str2.charAt(openLen) === open.slice(-1)) {
3458
- return file;
3459
- }
3460
- str2 = str2.slice(openLen);
3461
- const len = str2.length;
3462
- const language = matter2.language(str2, opts);
3463
- if (language.name) {
3464
- file.language = language.name;
3465
- str2 = str2.slice(language.raw.length);
3466
- }
3467
- let closeIndex = str2.indexOf(close);
3468
- if (closeIndex === -1) {
3469
- closeIndex = len;
3470
- }
3471
- file.matter = str2.slice(0, closeIndex);
3472
- const block = file.matter.replace(/^\s*#[^\n]+/gm, "").trim();
3473
- if (block === "") {
3474
- file.isEmpty = true;
3475
- file.empty = file.content;
3476
- file.data = {};
3477
- } else {
3478
- file.data = parse2(file.language, file.matter, opts);
3479
- }
3480
- if (closeIndex === len) {
3481
- file.content = "";
3482
- } else {
3483
- file.content = str2.slice(closeIndex + close.length);
3484
- if (file.content[0] === "\r") {
3485
- file.content = file.content.slice(1);
3486
- }
3487
- if (file.content[0] === "\n") {
3488
- file.content = file.content.slice(1);
3489
- }
3490
- }
3491
- excerpt(file, opts);
3492
- if (opts.sections === true || typeof opts.section === "function") {
3493
- sections(file, opts.section);
3494
- }
3495
- return file;
3496
- }
3497
- matter2.engines = engines2;
3498
- matter2.stringify = function(file, data, options2) {
3499
- if (typeof file === "string") file = matter2(file, options2);
3500
- return stringify(file, data, options2);
3501
- };
3502
- matter2.read = function(filepath, options2) {
3503
- const str2 = fs3.readFileSync(filepath, "utf8");
3504
- const file = matter2(str2, options2);
3505
- file.path = filepath;
3506
- return file;
3507
- };
3508
- matter2.test = function(str2, options2) {
3509
- return utils.startsWith(str2, defaults(options2).delimiters[0]);
3510
- };
3511
- matter2.language = function(str2, options2) {
3512
- const opts = defaults(options2);
3513
- const open = opts.delimiters[0];
3514
- if (matter2.test(str2)) {
3515
- str2 = str2.slice(open.length);
3516
- }
3517
- const language = str2.slice(0, str2.search(/\r?\n/));
3518
- return {
3519
- raw: language,
3520
- name: language ? language.trim() : ""
3521
- };
3522
- };
3523
- matter2.cache = {};
3524
- matter2.clearCache = function() {
3525
- matter2.cache = {};
3526
- };
3527
- module2.exports = matter2;
2866
+ var yaml3 = require_js_yaml();
2867
+ module.exports = yaml3;
3528
2868
  }
3529
2869
  });
3530
2870
 
3531
2871
  // ../publication/src/bridge.ts
3532
- import { createHash as createHash4 } from "node:crypto";
2872
+ import { createHash as createHash3 } from "node:crypto";
3533
2873
 
3534
2874
  // ../core/src/backend.ts
3535
2875
  import path3 from "node:path";
3536
2876
 
3537
2877
  // ../core/src/frontmatter.ts
3538
- var import_gray_matter = __toESM(require_gray_matter(), 1);
3539
2878
  var import_js_yaml = __toESM(require_js_yaml2(), 1);
3540
2879
 
3541
2880
  // ../core/src/frontmatter-contract.ts
@@ -3607,8 +2946,9 @@ var yamlEngine = {
3607
2946
  return import_js_yaml.default.safeLoad(input, { schema: losslessDateSchema }) ?? {};
3608
2947
  }
3609
2948
  };
3610
- function normalizeFrontmatter(data) {
2949
+ function normalizeFrontmatter(data, okfVersion) {
3611
2950
  const out = { ...data };
2951
+ if (okfVersion === "0.2") return out;
3612
2952
  const value = out.timestamp;
3613
2953
  if (value instanceof Date) {
3614
2954
  out.timestamp = value.toISOString();
@@ -3620,7 +2960,7 @@ function normalizeFrontmatter(data) {
3620
2960
  }
3621
2961
  return out;
3622
2962
  }
3623
- function parseMarkdown(raw, context) {
2963
+ function parseMarkdown(raw, context, options = {}) {
3624
2964
  const split = splitLeadingFrontmatter(raw, context);
3625
2965
  if (!("yamlSource" in split)) return { frontmatter: {}, body: split.body };
3626
2966
  let parsed;
@@ -3629,7 +2969,7 @@ function parseMarkdown(raw, context) {
3629
2969
  } catch (err) {
3630
2970
  throw new MalformedDocumentError(context, err);
3631
2971
  }
3632
- const frontmatter2 = normalizeFrontmatter(parsed);
2972
+ const frontmatter2 = normalizeFrontmatter(parsed, options.okfVersion);
3633
2973
  return { frontmatter: frontmatter2, body: split.body };
3634
2974
  }
3635
2975
  function normalizeDocumentBodyForStorage(body) {
@@ -3637,79 +2977,19 @@ function normalizeDocumentBodyForStorage(body) {
3637
2977
  `;
3638
2978
  }
3639
2979
  function stringifyWithData(data, body) {
3640
- const engines2 = import_gray_matter.default.engines;
3641
- const yaml4 = engines2.yaml.stringify(data).trim();
2980
+ const dumped = import_js_yaml.default.safeDump(data).trim();
3642
2981
  const content = body ?? "";
3643
2982
  const newline = (value) => value.endsWith("\n") ? value : `${value}
3644
2983
  `;
3645
- if (yaml4 === "{}") return normalizeDocumentBodyForStorage(content);
2984
+ if (dumped === "{}") return normalizeDocumentBodyForStorage(content);
3646
2985
  return `---
3647
- ${newline(yaml4)}---
2986
+ ${newline(dumped)}---
3648
2987
  ${normalizeDocumentBodyForStorage(content)}`;
3649
2988
  }
3650
2989
  function stringifyDoc(frontmatter2, body) {
3651
2990
  return stringifyWithData(frontmatter2, body);
3652
2991
  }
3653
2992
 
3654
- // ../core/src/content-type.ts
3655
- var EXTENSION_CONTENT_TYPES = Object.freeze({
3656
- // Text / markup / data (searchable + text-readable)
3657
- html: "text/html; charset=utf-8",
3658
- htm: "text/html; charset=utf-8",
3659
- md: "text/markdown; charset=utf-8",
3660
- markdown: "text/markdown; charset=utf-8",
3661
- txt: "text/plain; charset=utf-8",
3662
- text: "text/plain; charset=utf-8",
3663
- log: "text/plain; charset=utf-8",
3664
- csv: "text/csv; charset=utf-8",
3665
- tsv: "text/tab-separated-values; charset=utf-8",
3666
- json: "application/json; charset=utf-8",
3667
- jsonl: "application/json; charset=utf-8",
3668
- ndjson: "application/json; charset=utf-8",
3669
- xml: "application/xml; charset=utf-8",
3670
- yaml: "application/yaml; charset=utf-8",
3671
- yml: "application/yaml; charset=utf-8",
3672
- toml: "application/toml; charset=utf-8",
3673
- css: "text/css; charset=utf-8",
3674
- js: "text/javascript; charset=utf-8",
3675
- mjs: "text/javascript; charset=utf-8",
3676
- cjs: "text/javascript; charset=utf-8",
3677
- // Images
3678
- png: "image/png",
3679
- jpg: "image/jpeg",
3680
- jpeg: "image/jpeg",
3681
- gif: "image/gif",
3682
- webp: "image/webp",
3683
- bmp: "image/bmp",
3684
- ico: "image/x-icon",
3685
- svg: "image/svg+xml",
3686
- // Documents / archives / binary
3687
- pdf: "application/pdf",
3688
- zip: "application/zip",
3689
- gz: "application/gzip",
3690
- tar: "application/x-tar",
3691
- wasm: "application/wasm",
3692
- woff: "font/woff",
3693
- woff2: "font/woff2"
3694
- });
3695
- function extensionOfDocKey(docKey) {
3696
- const lastSegment = docKey.split("/").pop() ?? docKey;
3697
- const dot = lastSegment.lastIndexOf(".");
3698
- if (dot <= 0) return void 0;
3699
- const ext = lastSegment.slice(dot + 1).toLowerCase();
3700
- return ext.length > 0 ? ext : void 0;
3701
- }
3702
- function inferContentTypeFromDocKey(docKey) {
3703
- const ext = extensionOfDocKey(docKey);
3704
- if (!ext) return void 0;
3705
- return EXTENSION_CONTENT_TYPES[ext];
3706
- }
3707
- var DEFAULT_BLOB_CONTENT_TYPE = "application/octet-stream";
3708
- function resolveContentType(key, override) {
3709
- if (typeof override === "string" && override.trim() !== "") return override;
3710
- return inferContentTypeFromDocKey(key) ?? DEFAULT_BLOB_CONTENT_TYPE;
3711
- }
3712
-
3713
2993
  // ../core/src/errors.ts
3714
2994
  var InvalidInputError = class extends Error {
3715
2995
  constructor(message) {
@@ -3741,6 +3021,21 @@ var ConcurrentReplacementError = class extends Error {
3741
3021
  }
3742
3022
  };
3743
3023
 
3024
+ // ../core/src/okf-lifecycle.ts
3025
+ var OKF_LIFECYCLE_STATUSES = Object.freeze(["draft", "stable", "deprecated"]);
3026
+ function isOkfLifecycleStatus(value) {
3027
+ return typeof value === "string" && OKF_LIFECYCLE_STATUSES.includes(value);
3028
+ }
3029
+
3030
+ // ../core/src/mutation-attribution.ts
3031
+ var SUPERBEE_UPDATED_BY_FIELD = "superbee_updated_by";
3032
+ function nonEmptyString(value) {
3033
+ return typeof value === "string" && value.trim() !== "" ? value.trim() : void 0;
3034
+ }
3035
+ function mutationActorFromFrontmatter(frontmatter2) {
3036
+ return nonEmptyString(frontmatter2[SUPERBEE_UPDATED_BY_FIELD]) ?? nonEmptyString(frontmatter2.updated_by) ?? nonEmptyString(frontmatter2.actor);
3037
+ }
3038
+
3744
3039
  // ../core/src/paths.ts
3745
3040
  var RESERVED_FILENAMES = ["index.md", "log.md"];
3746
3041
  function toPosix(p) {
@@ -3821,19 +3116,314 @@ function assertSafeReservedDir(dir) {
3821
3116
  }
3822
3117
  }
3823
3118
 
3824
- // ../core/src/filesystem-identity.ts
3825
- import { promises as fs2 } from "node:fs";
3826
- import path2 from "node:path";
3827
- import { createHash as createHash2, randomUUID as randomUUID2 } from "node:crypto";
3828
-
3829
- // ../core/src/filesystem-lock.ts
3830
- import { promises as fs, realpathSync } from "node:fs";
3831
- import { homedir, hostname, userInfo } from "node:os";
3832
- import path from "node:path";
3833
- import { createHash, randomUUID } from "node:crypto";
3834
- var OWNER_FILE = "owner.json";
3835
- var DEFAULT_WAIT_MS = 5e3;
3836
- var DEFAULT_POLL_MS = 25;
3119
+ // ../core/src/links.ts
3120
+ function normalizeSegments(segments) {
3121
+ const out = [];
3122
+ for (const segment of segments) {
3123
+ if (segment === "" || segment === ".") continue;
3124
+ if (segment === ".." && out.length > 0 && out[out.length - 1] !== "..") {
3125
+ out.pop();
3126
+ continue;
3127
+ }
3128
+ out.push(segment);
3129
+ }
3130
+ return out;
3131
+ }
3132
+ function joinPosix(base, rel) {
3133
+ return normalizeSegments([...base.split("/"), ...rel.split("/")]).join("/");
3134
+ }
3135
+ function isExternalHref(href) {
3136
+ const h = href.trim();
3137
+ return /^[a-z][a-z0-9+.-]*:\/\//i.test(h) || h.startsWith("mailto:") || h.startsWith("#");
3138
+ }
3139
+ function extractMarkdownLinks(body) {
3140
+ const out = [];
3141
+ let textOpen = -1;
3142
+ let afterClose;
3143
+ let hrefFirst;
3144
+ let hrefRest;
3145
+ for (let cursor = 0; cursor < body.length; cursor++) {
3146
+ const char = body[cursor];
3147
+ if (hrefRest) {
3148
+ if (char === ")") {
3149
+ if (hrefRest.open === 0 || body[hrefRest.open - 1] !== "!") {
3150
+ out.push({
3151
+ text: body.slice(hrefRest.open + 1, hrefRest.close),
3152
+ href: body.slice(hrefRest.hrefStart, cursor)
3153
+ });
3154
+ }
3155
+ textOpen = -1;
3156
+ afterClose = void 0;
3157
+ hrefFirst = void 0;
3158
+ hrefRest = void 0;
3159
+ continue;
3160
+ }
3161
+ if (char.trim() === "") hrefRest = void 0;
3162
+ }
3163
+ if (hrefFirst) {
3164
+ if (char !== ")" && char.trim() !== "" && !hrefRest) {
3165
+ hrefRest = hrefFirst;
3166
+ }
3167
+ hrefFirst = void 0;
3168
+ }
3169
+ if (afterClose) {
3170
+ if (char === "(") {
3171
+ hrefFirst = { ...afterClose, hrefStart: cursor + 1 };
3172
+ }
3173
+ afterClose = void 0;
3174
+ }
3175
+ if (textOpen >= 0 && char === "]") {
3176
+ afterClose = { open: textOpen, close: cursor };
3177
+ textOpen = -1;
3178
+ }
3179
+ if (char === "[" && textOpen < 0) textOpen = cursor;
3180
+ }
3181
+ return out;
3182
+ }
3183
+ function resolveConceptId(fromId, href) {
3184
+ const target = (href.split("#")[0] ?? "").split("?")[0]?.trim() ?? "";
3185
+ if (target === "" || isExternalHref(target)) return null;
3186
+ if (!target.endsWith(".md")) return null;
3187
+ let resolved;
3188
+ if (target.startsWith("/")) {
3189
+ resolved = target.slice(1);
3190
+ } else {
3191
+ const slash = fromId.lastIndexOf("/");
3192
+ const fromDir = slash >= 0 ? fromId.slice(0, slash) : "";
3193
+ resolved = joinPosix(fromDir, target);
3194
+ }
3195
+ resolved = resolved.replace(/^(\.\.\/)+/, "");
3196
+ if (isReservedFile(resolved)) return null;
3197
+ const id = resolved.replace(/\.md$/, "");
3198
+ try {
3199
+ assertSafeConceptId(id);
3200
+ return id;
3201
+ } catch (error) {
3202
+ if (error instanceof InvalidInputError) return null;
3203
+ throw error;
3204
+ }
3205
+ }
3206
+ function parseLinksFromDoc(doc) {
3207
+ const links = [];
3208
+ for (const raw of extractMarkdownLinks(doc.body)) {
3209
+ const to = resolveConceptId(doc.id, raw.href);
3210
+ if (to === null) continue;
3211
+ links.push({ from: doc.id, to, text: raw.text, href: raw.href });
3212
+ }
3213
+ return links;
3214
+ }
3215
+
3216
+ // ../core/src/portable-frontmatter.ts
3217
+ var import_js_yaml2 = __toESM(require_js_yaml2(), 1);
3218
+ function parseLeadingFrontmatter(raw, context) {
3219
+ const split = splitLeadingFrontmatter(raw, context);
3220
+ if (!("yamlSource" in split)) return {};
3221
+ try {
3222
+ const parsed = import_js_yaml2.default.safeLoad(split.yamlSource);
3223
+ if (parsed === void 0 || parsed === null) return {};
3224
+ if (typeof parsed !== "object" || Array.isArray(parsed)) {
3225
+ throw new TypeError("YAML frontmatter must be a mapping");
3226
+ }
3227
+ return parsed;
3228
+ } catch (error) {
3229
+ if (error instanceof MalformedDocumentError) throw error;
3230
+ throw new MalformedDocumentError(context, error);
3231
+ }
3232
+ }
3233
+
3234
+ // ../core/src/query-filter.ts
3235
+ function matchesFilter(doc, filter) {
3236
+ if (filter.prefix && !doc.id.startsWith(filter.prefix)) return false;
3237
+ if (filter.type && doc.frontmatter.type !== filter.type) return false;
3238
+ if (filter.tags && filter.tags.length > 0) {
3239
+ const tags = Array.isArray(doc.frontmatter.tags) ? doc.frontmatter.tags : [];
3240
+ if (!filter.tags.every((tag) => tags.includes(tag))) return false;
3241
+ }
3242
+ if (filter.fields) {
3243
+ const frontmatter2 = doc.frontmatter;
3244
+ for (const [key, expected] of Object.entries(filter.fields)) {
3245
+ const raw = frontmatter2[key];
3246
+ const actual = raw === void 0 || raw === null ? [] : (Array.isArray(raw) ? raw : [raw]).map((value) => String(value));
3247
+ if (!actual.includes(expected)) return false;
3248
+ }
3249
+ }
3250
+ return true;
3251
+ }
3252
+
3253
+ // ../core/src/engine.ts
3254
+ async function readBundleOkfVersion(backend) {
3255
+ const index = await backend.readReserved("", "index.md");
3256
+ if (!index) return void 0;
3257
+ const value = parseLeadingFrontmatter(index.content, "index.md").okf_version;
3258
+ return typeof value === "string" && value.trim() !== "" ? value : void 0;
3259
+ }
3260
+ function assertReadableConceptId(id) {
3261
+ assertSafeConceptId(id);
3262
+ const rel = pathFromConceptId(id);
3263
+ if (isReservedFile(rel)) {
3264
+ throw new InvalidInputError(`'${id}' is a reserved file (index.md / log.md), not a concept document.`);
3265
+ }
3266
+ }
3267
+ async function readDocVersioned(backend, id) {
3268
+ assertReadableConceptId(id);
3269
+ return backend.read(id);
3270
+ }
3271
+ function isEnoent(err) {
3272
+ return typeof err === "object" && err !== null && err.code === "ENOENT";
3273
+ }
3274
+ async function readManyExisting(backend, ids, onMalformed) {
3275
+ try {
3276
+ return await backend.readMany(ids);
3277
+ } catch (err) {
3278
+ const malformed = err instanceof MalformedDocumentError;
3279
+ if (!isEnoent(err) && !(malformed && onMalformed)) throw err;
3280
+ const out = [];
3281
+ for (const id of ids) {
3282
+ try {
3283
+ out.push(await backend.read(id));
3284
+ } catch (candidate) {
3285
+ if (isEnoent(candidate)) continue;
3286
+ if (candidate instanceof MalformedDocumentError && onMalformed) {
3287
+ onMalformed({ id, reason: candidate.detail });
3288
+ continue;
3289
+ }
3290
+ throw candidate;
3291
+ }
3292
+ }
3293
+ return out;
3294
+ }
3295
+ }
3296
+ async function scanMatching(backend, filter, onSkip) {
3297
+ const ids = await backend.list(filter.prefix);
3298
+ const results = [];
3299
+ for (const result of await readManyExisting(backend, ids, onSkip)) {
3300
+ if (matchesFilter(result.doc, filter)) results.push(result);
3301
+ }
3302
+ results.sort((a, b) => a.doc.id.localeCompare(b.doc.id));
3303
+ return results;
3304
+ }
3305
+ async function query(backend, filter = {}, options = {}) {
3306
+ return (await scanMatching(backend, filter, options.onSkip)).map((result) => result.doc);
3307
+ }
3308
+ async function queryHeads(backend, filter = {}, options = {}) {
3309
+ if (backend.queryHeads) {
3310
+ const rows = (await backend.queryHeads(filter)).filter((row) => matchesFilter(row, filter));
3311
+ rows.sort((a, b) => a.id.localeCompare(b.id));
3312
+ return rows;
3313
+ }
3314
+ return (await scanMatching(backend, filter, options.onSkip)).map(({ doc, version }) => ({
3315
+ id: doc.id,
3316
+ frontmatter: doc.frontmatter,
3317
+ version
3318
+ }));
3319
+ }
3320
+ function normalizeEdgeSelector(raw) {
3321
+ if (raw.endsWith("/")) {
3322
+ const stem = raw.slice(0, -1);
3323
+ assertSafeConceptId(stem);
3324
+ return `${stem}/`;
3325
+ }
3326
+ assertSafeConceptId(raw);
3327
+ return raw;
3328
+ }
3329
+ function matchesEdgeSelector(value, selectors) {
3330
+ if (selectors === void 0) return true;
3331
+ return selectors.some(
3332
+ (selector2) => selector2.endsWith("/") ? value.startsWith(selector2) : value === selector2
3333
+ );
3334
+ }
3335
+ function toSelectorList(value) {
3336
+ if (value === void 0) return void 0;
3337
+ return Array.isArray(value) ? value : [value];
3338
+ }
3339
+ async function queryEdges(backend, filter = {}) {
3340
+ const fromSelectors = toSelectorList(filter.from)?.map(normalizeEdgeSelector);
3341
+ const toSelectors = toSelectorList(filter.to)?.map(normalizeEdgeSelector);
3342
+ const edges = [];
3343
+ for (const doc of await query(backend)) {
3344
+ for (const link of parseLinksFromDoc(doc)) {
3345
+ if (!matchesEdgeSelector(link.from, fromSelectors)) continue;
3346
+ if (!matchesEdgeSelector(link.to, toSelectors)) continue;
3347
+ if (filter.text !== void 0 && link.text !== filter.text) continue;
3348
+ edges.push(link);
3349
+ }
3350
+ }
3351
+ edges.sort((a, b) => a.from.localeCompare(b.from) || a.to.localeCompare(b.to) || a.text.localeCompare(b.text));
3352
+ return edges;
3353
+ }
3354
+
3355
+ // ../core/src/content-type.ts
3356
+ var EXTENSION_CONTENT_TYPES = Object.freeze({
3357
+ // Text / markup / data (searchable + text-readable)
3358
+ html: "text/html; charset=utf-8",
3359
+ htm: "text/html; charset=utf-8",
3360
+ md: "text/markdown; charset=utf-8",
3361
+ markdown: "text/markdown; charset=utf-8",
3362
+ txt: "text/plain; charset=utf-8",
3363
+ text: "text/plain; charset=utf-8",
3364
+ log: "text/plain; charset=utf-8",
3365
+ csv: "text/csv; charset=utf-8",
3366
+ tsv: "text/tab-separated-values; charset=utf-8",
3367
+ json: "application/json; charset=utf-8",
3368
+ jsonl: "application/json; charset=utf-8",
3369
+ ndjson: "application/json; charset=utf-8",
3370
+ xml: "application/xml; charset=utf-8",
3371
+ yaml: "application/yaml; charset=utf-8",
3372
+ yml: "application/yaml; charset=utf-8",
3373
+ toml: "application/toml; charset=utf-8",
3374
+ css: "text/css; charset=utf-8",
3375
+ js: "text/javascript; charset=utf-8",
3376
+ mjs: "text/javascript; charset=utf-8",
3377
+ cjs: "text/javascript; charset=utf-8",
3378
+ // Images
3379
+ png: "image/png",
3380
+ jpg: "image/jpeg",
3381
+ jpeg: "image/jpeg",
3382
+ gif: "image/gif",
3383
+ webp: "image/webp",
3384
+ bmp: "image/bmp",
3385
+ ico: "image/x-icon",
3386
+ svg: "image/svg+xml",
3387
+ // Documents / archives / binary
3388
+ pdf: "application/pdf",
3389
+ zip: "application/zip",
3390
+ gz: "application/gzip",
3391
+ tar: "application/x-tar",
3392
+ wasm: "application/wasm",
3393
+ woff: "font/woff",
3394
+ woff2: "font/woff2"
3395
+ });
3396
+ function extensionOfDocKey(docKey) {
3397
+ const lastSegment = docKey.split("/").pop() ?? docKey;
3398
+ const dot = lastSegment.lastIndexOf(".");
3399
+ if (dot <= 0) return void 0;
3400
+ const ext = lastSegment.slice(dot + 1).toLowerCase();
3401
+ return ext.length > 0 ? ext : void 0;
3402
+ }
3403
+ function inferContentTypeFromDocKey(docKey) {
3404
+ const ext = extensionOfDocKey(docKey);
3405
+ if (!ext) return void 0;
3406
+ return EXTENSION_CONTENT_TYPES[ext];
3407
+ }
3408
+ var DEFAULT_BLOB_CONTENT_TYPE = "application/octet-stream";
3409
+ function resolveContentType(key, override) {
3410
+ if (typeof override === "string" && override.trim() !== "") return override;
3411
+ return inferContentTypeFromDocKey(key) ?? DEFAULT_BLOB_CONTENT_TYPE;
3412
+ }
3413
+
3414
+ // ../core/src/filesystem-identity.ts
3415
+ import { promises as fs2 } from "node:fs";
3416
+ import path2 from "node:path";
3417
+ import { createHash as createHash2, randomUUID as randomUUID2 } from "node:crypto";
3418
+
3419
+ // ../core/src/filesystem-lock.ts
3420
+ import { promises as fs, realpathSync } from "node:fs";
3421
+ import { homedir, hostname, userInfo } from "node:os";
3422
+ import path from "node:path";
3423
+ import { createHash, randomUUID } from "node:crypto";
3424
+ var OWNER_FILE = "owner.json";
3425
+ var DEFAULT_WAIT_MS = 5e3;
3426
+ var DEFAULT_POLL_MS = 25;
3837
3427
  var FilesystemMutationLockError = class extends Error {
3838
3428
  lockPath;
3839
3429
  owner;
@@ -4013,9 +3603,9 @@ async function resolvedPortableRoot(portableRoot) {
4013
3603
  if (portableRoot === void 0) return void 0;
4014
3604
  return fs.realpath(portableRoot).catch(() => path.resolve(portableRoot));
4015
3605
  }
4016
- async function selectLockRoot(options2) {
4017
- const portableRoot = await resolvedPortableRoot(options2.portableRoot);
4018
- const lockRoot = options2.lockRoot !== void 0 ? explicitFilesystemMutationLockRoot(options2.lockRoot, portableRoot) : filesystemMutationLockRoot(portableRoot);
3606
+ async function selectLockRoot(options) {
3607
+ const portableRoot = await resolvedPortableRoot(options.portableRoot);
3608
+ const lockRoot = options.lockRoot !== void 0 ? explicitFilesystemMutationLockRoot(options.lockRoot, portableRoot) : filesystemMutationLockRoot(portableRoot);
4019
3609
  await ensurePrivateLockRoot(lockRoot);
4020
3610
  return lockRoot;
4021
3611
  }
@@ -4102,12 +3692,12 @@ var IDENTITY_KEY_SHAPE = /^[0-9a-f]{64}$/;
4102
3692
  function assertIdentityKey(key) {
4103
3693
  if (!IDENTITY_KEY_SHAPE.test(key)) throw new TypeError("identity key must be a lowercase hex sha256 digest");
4104
3694
  }
4105
- async function acquireFilesystemIdentityLock(key, identity, options2 = {}) {
3695
+ async function acquireFilesystemIdentityLock(key, identity, options = {}) {
4106
3696
  assertIdentityKey(key);
4107
- const waitMs = positiveOption(options2.waitMs, DEFAULT_WAIT_MS, "waitMs");
4108
- const pollMs = positiveOption(options2.pollMs, DEFAULT_POLL_MS, "pollMs");
3697
+ const waitMs = positiveOption(options.waitMs, DEFAULT_WAIT_MS, "waitMs");
3698
+ const pollMs = positiveOption(options.pollMs, DEFAULT_POLL_MS, "pollMs");
4109
3699
  const owner = newOwner(identity);
4110
- const lockRoot = await selectLockRoot(options2);
3700
+ const lockRoot = await selectLockRoot(options);
4111
3701
  return claimLockPath(path.join(lockRoot, `${key}.lock`), owner, waitMs, pollMs);
4112
3702
  }
4113
3703
 
@@ -4539,17 +4129,161 @@ var nodeFilesystemIdentityPort = Object.freeze({
4539
4129
  }
4540
4130
  });
4541
4131
 
4542
- // ../core/src/mutation-attribution.ts
4543
- var SUPERBEE_UPDATED_BY_FIELD = "superbee_updated_by";
4544
- function nonEmptyString(value) {
4545
- return typeof value === "string" && value.trim() !== "" ? value.trim() : void 0;
4546
- }
4547
- function mutationActorFromFrontmatter(frontmatter2) {
4548
- return nonEmptyString(frontmatter2[SUPERBEE_UPDATED_BY_FIELD]) ?? nonEmptyString(frontmatter2.updated_by) ?? nonEmptyString(frontmatter2.actor);
4549
- }
4550
-
4551
- // ../core/src/versioning.ts
4552
- import { createHash as createHash3 } from "node:crypto";
4132
+ // ../core/src/sha256.ts
4133
+ var K = new Uint32Array([
4134
+ 1116352408,
4135
+ 1899447441,
4136
+ 3049323471,
4137
+ 3921009573,
4138
+ 961987163,
4139
+ 1508970993,
4140
+ 2453635748,
4141
+ 2870763221,
4142
+ 3624381080,
4143
+ 310598401,
4144
+ 607225278,
4145
+ 1426881987,
4146
+ 1925078388,
4147
+ 2162078206,
4148
+ 2614888103,
4149
+ 3248222580,
4150
+ 3835390401,
4151
+ 4022224774,
4152
+ 264347078,
4153
+ 604807628,
4154
+ 770255983,
4155
+ 1249150122,
4156
+ 1555081692,
4157
+ 1996064986,
4158
+ 2554220882,
4159
+ 2821834349,
4160
+ 2952996808,
4161
+ 3210313671,
4162
+ 3336571891,
4163
+ 3584528711,
4164
+ 113926993,
4165
+ 338241895,
4166
+ 666307205,
4167
+ 773529912,
4168
+ 1294757372,
4169
+ 1396182291,
4170
+ 1695183700,
4171
+ 1986661051,
4172
+ 2177026350,
4173
+ 2456956037,
4174
+ 2730485921,
4175
+ 2820302411,
4176
+ 3259730800,
4177
+ 3345764771,
4178
+ 3516065817,
4179
+ 3600352804,
4180
+ 4094571909,
4181
+ 275423344,
4182
+ 430227734,
4183
+ 506948616,
4184
+ 659060556,
4185
+ 883997877,
4186
+ 958139571,
4187
+ 1322822218,
4188
+ 1537002063,
4189
+ 1747873779,
4190
+ 1955562222,
4191
+ 2024104815,
4192
+ 2227730452,
4193
+ 2361852424,
4194
+ 2428436474,
4195
+ 2756734187,
4196
+ 3204031479,
4197
+ 3329325298
4198
+ ]);
4199
+ var INITIAL_STATE = new Uint32Array([
4200
+ 1779033703,
4201
+ 3144134277,
4202
+ 1013904242,
4203
+ 2773480762,
4204
+ 1359893119,
4205
+ 2600822924,
4206
+ 528734635,
4207
+ 1541459225
4208
+ ]);
4209
+ var encoder = new TextEncoder();
4210
+ function rotr(value, bits) {
4211
+ return value >>> bits | value << 32 - bits;
4212
+ }
4213
+ function compress(h, w, view, offset) {
4214
+ for (let i = 0; i < 16; i++) {
4215
+ w[i] = view.getUint32(offset + i * 4);
4216
+ }
4217
+ for (let i = 16; i < 64; i++) {
4218
+ const w15 = w[i - 15];
4219
+ const w2 = w[i - 2];
4220
+ const s0 = rotr(w15, 7) ^ rotr(w15, 18) ^ w15 >>> 3;
4221
+ const s1 = rotr(w2, 17) ^ rotr(w2, 19) ^ w2 >>> 10;
4222
+ w[i] = w[i - 16] + s0 + w[i - 7] + s1 >>> 0;
4223
+ }
4224
+ let a = h[0];
4225
+ let b = h[1];
4226
+ let c = h[2];
4227
+ let d = h[3];
4228
+ let e = h[4];
4229
+ let f = h[5];
4230
+ let g = h[6];
4231
+ let hh = h[7];
4232
+ for (let i = 0; i < 64; i++) {
4233
+ const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25);
4234
+ const ch = e & f ^ ~e & g;
4235
+ const t1 = hh + S1 + ch + K[i] + w[i] >>> 0;
4236
+ const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22);
4237
+ const maj = a & b ^ a & c ^ b & c;
4238
+ const t2 = S0 + maj >>> 0;
4239
+ hh = g;
4240
+ g = f;
4241
+ f = e;
4242
+ e = d + t1 >>> 0;
4243
+ d = c;
4244
+ c = b;
4245
+ b = a;
4246
+ a = t1 + t2 >>> 0;
4247
+ }
4248
+ h[0] = h[0] + a >>> 0;
4249
+ h[1] = h[1] + b >>> 0;
4250
+ h[2] = h[2] + c >>> 0;
4251
+ h[3] = h[3] + d >>> 0;
4252
+ h[4] = h[4] + e >>> 0;
4253
+ h[5] = h[5] + f >>> 0;
4254
+ h[6] = h[6] + g >>> 0;
4255
+ h[7] = h[7] + hh >>> 0;
4256
+ }
4257
+ function sha256HexOfBytes(bytes) {
4258
+ const h = new Uint32Array(INITIAL_STATE);
4259
+ const w = new Uint32Array(64);
4260
+ const length = bytes.byteLength;
4261
+ const view = new DataView(bytes.buffer, bytes.byteOffset, length);
4262
+ const fullBlocks = length >>> 6;
4263
+ for (let block = 0; block < fullBlocks; block++) {
4264
+ compress(h, w, view, block * 64);
4265
+ }
4266
+ const remaining = length - fullBlocks * 64;
4267
+ const tail = new Uint8Array(remaining + 1 + 8 > 64 ? 128 : 64);
4268
+ tail.set(bytes.subarray(fullBlocks * 64));
4269
+ tail[remaining] = 128;
4270
+ const tailView = new DataView(tail.buffer);
4271
+ const bitLengthHigh = Math.floor(length / 536870912);
4272
+ const bitLengthLow = length << 3 >>> 0;
4273
+ tailView.setUint32(tail.length - 8, bitLengthHigh);
4274
+ tailView.setUint32(tail.length - 4, bitLengthLow);
4275
+ for (let offset = 0; offset < tail.length; offset += 64) {
4276
+ compress(h, w, tailView, offset);
4277
+ }
4278
+ let hex = "";
4279
+ for (let i = 0; i < 8; i++) {
4280
+ hex += h[i].toString(16).padStart(8, "0");
4281
+ }
4282
+ return hex;
4283
+ }
4284
+ function sha256HexOfUtf8(input) {
4285
+ return sha256HexOfBytes(encoder.encode(input));
4286
+ }
4553
4287
 
4554
4288
  // ../core/src/version-transport.ts
4555
4289
  var VersionConflict = class extends Error {
@@ -4569,16 +4303,17 @@ var VersionConflict = class extends Error {
4569
4303
 
4570
4304
  // ../core/src/versioning.ts
4571
4305
  function sha256Hex(input) {
4572
- return createHash3("sha256").update(input, "utf8").digest("hex");
4306
+ return sha256HexOfUtf8(input);
4573
4307
  }
4574
4308
  function versionOfBytes(raw) {
4575
4309
  return `sha256:${sha256Hex(raw)}`;
4576
4310
  }
4577
4311
  function blobVersion(bytes) {
4578
- return `sha256:${createHash3("sha256").update(bytes).digest("hex")}`;
4312
+ return `sha256:${sha256HexOfBytes(bytes)}`;
4579
4313
  }
4580
4314
  function defaultActor() {
4581
- return process.env.USER?.trim() || process.env.USERNAME?.trim() || process.env.LOGNAME?.trim() || "local";
4315
+ const env = typeof process !== "undefined" ? process.env : void 0;
4316
+ return env?.USER?.trim() || env?.USERNAME?.trim() || env?.LOGNAME?.trim() || "local";
4582
4317
  }
4583
4318
 
4584
4319
  // ../core/src/backend.ts
@@ -4627,7 +4362,7 @@ function reservedPath(dir, name) {
4627
4362
  const d = toPosix(dir).replace(/^\.?\//, "").replace(/\/$/, "");
4628
4363
  return d === "" ? name : `${d}/${name}`;
4629
4364
  }
4630
- var FilesystemBackend = class {
4365
+ var FilesystemBackend = class _FilesystemBackend {
4631
4366
  #root;
4632
4367
  /**
4633
4368
  * The root is resolved once here: a relative root would otherwise re-resolve against the
@@ -4639,44 +4374,61 @@ var FilesystemBackend = class {
4639
4374
  publicationRoots.set(this, this.#root);
4640
4375
  }
4641
4376
  async read(id) {
4377
+ return this.#readWithEdition(id, () => this.#readEdition());
4378
+ }
4379
+ async #readEdition() {
4380
+ try {
4381
+ return await readBundleOkfVersion(this);
4382
+ } catch (error) {
4383
+ if (!(error instanceof MalformedDocumentError)) throw error;
4384
+ return void 0;
4385
+ }
4386
+ }
4387
+ async #readWithEdition(id, edition) {
4642
4388
  assertSafeConceptId(id);
4643
4389
  const rel = pathFromConceptId(id);
4644
4390
  const observed = await observeExact(nodeFilesystemIdentityPort, this.#root, rel, readBytes);
4645
4391
  if (observed.state === "absent") throw notFound(this.#root, rel);
4646
4392
  const raw = observed.value.toString("utf8");
4647
- const { frontmatter: frontmatter2, body } = parseMarkdown(raw, rel);
4393
+ const { frontmatter: frontmatter2, body } = parseMarkdown(raw, rel, { okfVersion: await edition() });
4648
4394
  return { doc: { id, frontmatter: frontmatter2, body }, version: versionOfBytes(raw) };
4649
4395
  }
4650
4396
  async readMany(ids) {
4651
4397
  for (const id of ids) assertSafeConceptId(id);
4652
4398
  const out = [];
4653
- for (const id of ids) out.push(await this.read(id));
4399
+ if (this.read !== _FilesystemBackend.prototype.read) {
4400
+ for (const id of ids) out.push(await this.read(id));
4401
+ return out;
4402
+ }
4403
+ let editionPromise;
4404
+ const edition = () => editionPromise ??= this.#readEdition();
4405
+ for (const id of ids) out.push(await this.#readWithEdition(id, edition));
4654
4406
  return out;
4655
4407
  }
4656
- async write(id, doc, options2 = {}) {
4408
+ async write(id, doc, options = {}) {
4657
4409
  assertSafeConceptId(id);
4658
4410
  const raw = stringifyDoc(doc.frontmatter, doc.body ?? "");
4659
4411
  const rel = pathFromConceptId(id);
4660
4412
  return mutateExact(nodeFilesystemIdentityPort, this.#root, rel, async (target) => {
4661
- if (options2.expectedVersion !== void 0) {
4413
+ if (options.expectedVersion !== void 0) {
4662
4414
  const bytes = await target.current();
4663
4415
  const current = bytes === null ? null : versionOfBytes(bytes.toString("utf8"));
4664
- if (current !== options2.expectedVersion) {
4665
- throw new VersionConflict(id, options2.expectedVersion, current);
4416
+ if (current !== options.expectedVersion) {
4417
+ throw new VersionConflict(id, options.expectedVersion, current);
4666
4418
  }
4667
4419
  }
4668
4420
  await target.replace(Buffer.from(raw, "utf8"));
4669
4421
  return versionOfBytes(raw);
4670
4422
  });
4671
4423
  }
4672
- async delete(id, options2 = {}) {
4424
+ async delete(id, options = {}) {
4673
4425
  assertSafeConceptId(id);
4674
4426
  return mutateExact(nodeFilesystemIdentityPort, this.#root, pathFromConceptId(id), async (target) => {
4675
4427
  const bytes = await target.current();
4676
4428
  if (bytes === null) return false;
4677
4429
  const current = versionOfBytes(bytes.toString("utf8"));
4678
- if (options2.expectedVersion !== void 0 && current !== options2.expectedVersion) {
4679
- throw new VersionConflict(id, options2.expectedVersion, current);
4430
+ if (options.expectedVersion !== void 0 && current !== options.expectedVersion) {
4431
+ throw new VersionConflict(id, options.expectedVersion, current);
4680
4432
  }
4681
4433
  await target.remove();
4682
4434
  return true;
@@ -4730,15 +4482,15 @@ var FilesystemBackend = class {
4730
4482
  const content = observed.value.toString("utf8");
4731
4483
  return { content, version: versionOfBytes(content) };
4732
4484
  }
4733
- async writeReserved(dir, name, content, options2 = {}) {
4485
+ async writeReserved(dir, name, content, options = {}) {
4734
4486
  assertSafeReservedDir(dir);
4735
4487
  const rel = reservedPath(dir, name);
4736
4488
  return mutateExact(nodeFilesystemIdentityPort, this.#root, rel, async (target) => {
4737
- if (options2.expectedVersion !== void 0) {
4489
+ if (options.expectedVersion !== void 0) {
4738
4490
  const bytes = await target.current();
4739
4491
  const current = bytes === null ? null : versionOfBytes(bytes.toString("utf8"));
4740
- if (current !== options2.expectedVersion) {
4741
- throw new VersionConflict(rel, options2.expectedVersion, current);
4492
+ if (current !== options.expectedVersion) {
4493
+ throw new VersionConflict(rel, options.expectedVersion, current);
4742
4494
  }
4743
4495
  }
4744
4496
  await target.replace(Buffer.from(content, "utf8"));
@@ -4753,28 +4505,28 @@ var FilesystemBackend = class {
4753
4505
  const bytes = observed.value;
4754
4506
  return { bytes, contentType: resolveContentType(key), version: blobVersion(bytes) };
4755
4507
  }
4756
- async writeBlob(key, bytes, _contentType, options2 = {}) {
4508
+ async writeBlob(key, bytes, _contentType, options = {}) {
4757
4509
  assertSafeBlobKey(key);
4758
4510
  return mutateExact(nodeFilesystemIdentityPort, this.#root, key, async (target) => {
4759
- if (options2.expectedVersion !== void 0) {
4511
+ if (options.expectedVersion !== void 0) {
4760
4512
  const existing = await target.current();
4761
4513
  const current = existing === null ? null : blobVersion(existing);
4762
- if (current !== options2.expectedVersion) {
4763
- throw new VersionConflict(key, options2.expectedVersion, current);
4514
+ if (current !== options.expectedVersion) {
4515
+ throw new VersionConflict(key, options.expectedVersion, current);
4764
4516
  }
4765
4517
  }
4766
4518
  await target.replace(bytes);
4767
4519
  return blobVersion(bytes);
4768
4520
  });
4769
4521
  }
4770
- async deleteBlob(key, options2 = {}) {
4522
+ async deleteBlob(key, options = {}) {
4771
4523
  assertSafeBlobKey(key);
4772
4524
  return mutateExact(nodeFilesystemIdentityPort, this.#root, key, async (target) => {
4773
4525
  const existing = await target.current();
4774
4526
  if (existing === null) return false;
4775
4527
  const current = blobVersion(existing);
4776
- if (options2.expectedVersion !== void 0 && current !== options2.expectedVersion) {
4777
- throw new VersionConflict(key, options2.expectedVersion, current);
4528
+ if (options.expectedVersion !== void 0 && current !== options.expectedVersion) {
4529
+ throw new VersionConflict(key, options.expectedVersion, current);
4778
4530
  }
4779
4531
  await target.remove();
4780
4532
  return true;
@@ -4803,245 +4555,19 @@ var FilesystemBackend = class {
4803
4555
  }
4804
4556
  };
4805
4557
 
4806
- // ../core/src/links.ts
4807
- function normalizeSegments(segments) {
4808
- const out = [];
4809
- for (const segment of segments) {
4810
- if (segment === "" || segment === ".") continue;
4811
- if (segment === ".." && out.length > 0 && out[out.length - 1] !== "..") {
4812
- out.pop();
4813
- continue;
4814
- }
4815
- out.push(segment);
4816
- }
4817
- return out;
4818
- }
4819
- function joinPosix(base, rel) {
4820
- return normalizeSegments([...base.split("/"), ...rel.split("/")]).join("/");
4821
- }
4822
- function isExternalHref(href) {
4823
- const h = href.trim();
4824
- return /^[a-z][a-z0-9+.-]*:\/\//i.test(h) || h.startsWith("mailto:") || h.startsWith("#");
4825
- }
4826
- function extractMarkdownLinks(body) {
4827
- const out = [];
4828
- let textOpen = -1;
4829
- let afterClose;
4830
- let hrefFirst;
4831
- let hrefRest;
4832
- for (let cursor = 0; cursor < body.length; cursor++) {
4833
- const char = body[cursor];
4834
- if (hrefRest) {
4835
- if (char === ")") {
4836
- if (hrefRest.open === 0 || body[hrefRest.open - 1] !== "!") {
4837
- out.push({
4838
- text: body.slice(hrefRest.open + 1, hrefRest.close),
4839
- href: body.slice(hrefRest.hrefStart, cursor)
4840
- });
4841
- }
4842
- textOpen = -1;
4843
- afterClose = void 0;
4844
- hrefFirst = void 0;
4845
- hrefRest = void 0;
4846
- continue;
4847
- }
4848
- if (char.trim() === "") hrefRest = void 0;
4849
- }
4850
- if (hrefFirst) {
4851
- if (char !== ")" && char.trim() !== "" && !hrefRest) {
4852
- hrefRest = hrefFirst;
4853
- }
4854
- hrefFirst = void 0;
4855
- }
4856
- if (afterClose) {
4857
- if (char === "(") {
4858
- hrefFirst = { ...afterClose, hrefStart: cursor + 1 };
4859
- }
4860
- afterClose = void 0;
4861
- }
4862
- if (textOpen >= 0 && char === "]") {
4863
- afterClose = { open: textOpen, close: cursor };
4864
- textOpen = -1;
4865
- }
4866
- if (char === "[" && textOpen < 0) textOpen = cursor;
4867
- }
4868
- return out;
4869
- }
4870
- function resolveConceptId(fromId, href) {
4871
- const target = (href.split("#")[0] ?? "").split("?")[0]?.trim() ?? "";
4872
- if (target === "" || isExternalHref(target)) return null;
4873
- if (!target.endsWith(".md")) return null;
4874
- let resolved;
4875
- if (target.startsWith("/")) {
4876
- resolved = target.slice(1);
4877
- } else {
4878
- const slash = fromId.lastIndexOf("/");
4879
- const fromDir = slash >= 0 ? fromId.slice(0, slash) : "";
4880
- resolved = joinPosix(fromDir, target);
4881
- }
4882
- resolved = resolved.replace(/^(\.\.\/)+/, "");
4883
- if (isReservedFile(resolved)) return null;
4884
- const id = resolved.replace(/\.md$/, "");
4885
- try {
4886
- assertSafeConceptId(id);
4887
- return id;
4888
- } catch (error) {
4889
- if (error instanceof InvalidInputError) return null;
4890
- throw error;
4891
- }
4892
- }
4893
- function parseLinksFromDoc(doc) {
4894
- const links = [];
4895
- for (const raw of extractMarkdownLinks(doc.body)) {
4896
- const to = resolveConceptId(doc.id, raw.href);
4897
- if (to === null) continue;
4898
- links.push({ from: doc.id, to, text: raw.text, href: raw.href });
4899
- }
4900
- return links;
4901
- }
4902
-
4903
- // ../core/src/portable-frontmatter.ts
4904
- var import_js_yaml2 = __toESM(require_js_yaml2(), 1);
4905
- function parseLeadingFrontmatter(raw, context) {
4906
- const split = splitLeadingFrontmatter(raw, context);
4907
- if (!("yamlSource" in split)) return {};
4908
- try {
4909
- const parsed = import_js_yaml2.default.safeLoad(split.yamlSource);
4910
- if (parsed === void 0 || parsed === null) return {};
4911
- if (typeof parsed !== "object" || Array.isArray(parsed)) {
4912
- throw new TypeError("YAML frontmatter must be a mapping");
4913
- }
4914
- return parsed;
4915
- } catch (error) {
4916
- if (error instanceof MalformedDocumentError) throw error;
4917
- throw new MalformedDocumentError(context, error);
4918
- }
4919
- }
4920
-
4921
- // ../core/src/query-filter.ts
4922
- function matchesFilter(doc, filter) {
4923
- if (filter.prefix && !doc.id.startsWith(filter.prefix)) return false;
4924
- if (filter.type && doc.frontmatter.type !== filter.type) return false;
4925
- if (filter.tags && filter.tags.length > 0) {
4926
- const tags = Array.isArray(doc.frontmatter.tags) ? doc.frontmatter.tags : [];
4927
- if (!filter.tags.every((tag) => tags.includes(tag))) return false;
4928
- }
4929
- if (filter.fields) {
4930
- const frontmatter2 = doc.frontmatter;
4931
- for (const [key, expected] of Object.entries(filter.fields)) {
4932
- const raw = frontmatter2[key];
4933
- const actual = raw === void 0 || raw === null ? [] : (Array.isArray(raw) ? raw : [raw]).map((value) => String(value));
4934
- if (!actual.includes(expected)) return false;
4935
- }
4936
- }
4937
- return true;
4938
- }
4939
-
4940
- // ../core/src/engine.ts
4941
- async function readBundleOkfVersion(backend) {
4942
- const index = await backend.readReserved("", "index.md");
4943
- if (!index) return void 0;
4944
- const value = parseLeadingFrontmatter(index.content, "index.md").okf_version;
4945
- return typeof value === "string" && value.trim() !== "" ? value : void 0;
4946
- }
4947
- function assertReadableConceptId(id) {
4948
- assertSafeConceptId(id);
4949
- const rel = pathFromConceptId(id);
4950
- if (isReservedFile(rel)) {
4951
- throw new InvalidInputError(`'${id}' is a reserved file (index.md / log.md), not a concept document.`);
4952
- }
4953
- }
4954
- async function readDocVersioned(backend, id) {
4955
- assertReadableConceptId(id);
4956
- return backend.read(id);
4957
- }
4958
- function isEnoent(err) {
4959
- return typeof err === "object" && err !== null && err.code === "ENOENT";
4960
- }
4961
- async function readManyExisting(backend, ids, onMalformed) {
4962
- try {
4963
- return await backend.readMany(ids);
4964
- } catch (err) {
4965
- const malformed = err instanceof MalformedDocumentError;
4966
- if (!isEnoent(err) && !(malformed && onMalformed)) throw err;
4967
- const out = [];
4968
- for (const id of ids) {
4969
- try {
4970
- out.push(await backend.read(id));
4971
- } catch (candidate) {
4972
- if (isEnoent(candidate)) continue;
4973
- if (candidate instanceof MalformedDocumentError && onMalformed) {
4974
- onMalformed({ id, reason: candidate.detail });
4975
- continue;
4976
- }
4977
- throw candidate;
4978
- }
4979
- }
4980
- return out;
4981
- }
4982
- }
4983
- async function scanMatching(backend, filter, onSkip) {
4984
- const ids = await backend.list(filter.prefix);
4985
- const results = [];
4986
- for (const result of await readManyExisting(backend, ids, onSkip)) {
4987
- if (matchesFilter(result.doc, filter)) results.push(result);
4988
- }
4989
- results.sort((a, b) => a.doc.id.localeCompare(b.doc.id));
4990
- return results;
4991
- }
4992
- async function query(backend, filter = {}, options2 = {}) {
4993
- return (await scanMatching(backend, filter, options2.onSkip)).map((result) => result.doc);
4994
- }
4995
- async function queryHeads(backend, filter = {}, options2 = {}) {
4996
- if (backend.queryHeads) {
4997
- const rows = (await backend.queryHeads(filter)).filter((row) => matchesFilter(row, filter));
4998
- rows.sort((a, b) => a.id.localeCompare(b.id));
4999
- return rows;
5000
- }
5001
- return (await scanMatching(backend, filter, options2.onSkip)).map(({ doc, version }) => ({
5002
- id: doc.id,
5003
- frontmatter: doc.frontmatter,
5004
- version
5005
- }));
5006
- }
5007
- function normalizeEdgeSelector(raw) {
5008
- if (raw.endsWith("/")) {
5009
- const stem = raw.slice(0, -1);
5010
- assertSafeConceptId(stem);
5011
- return `${stem}/`;
5012
- }
5013
- assertSafeConceptId(raw);
5014
- return raw;
5015
- }
5016
- function matchesEdgeSelector(value, selectors) {
5017
- if (selectors === void 0) return true;
5018
- return selectors.some(
5019
- (selector2) => selector2.endsWith("/") ? value.startsWith(selector2) : value === selector2
5020
- );
5021
- }
5022
- function toSelectorList(value) {
5023
- if (value === void 0) return void 0;
5024
- return Array.isArray(value) ? value : [value];
5025
- }
5026
- async function queryEdges(backend, filter = {}) {
5027
- const fromSelectors = toSelectorList(filter.from)?.map(normalizeEdgeSelector);
5028
- const toSelectors = toSelectorList(filter.to)?.map(normalizeEdgeSelector);
5029
- const edges = [];
5030
- for (const doc of await query(backend)) {
5031
- for (const link of parseLinksFromDoc(doc)) {
5032
- if (!matchesEdgeSelector(link.from, fromSelectors)) continue;
5033
- if (!matchesEdgeSelector(link.to, toSelectors)) continue;
5034
- if (filter.text !== void 0 && link.text !== filter.text) continue;
5035
- edges.push(link);
5036
- }
5037
- }
5038
- edges.sort((a, b) => a.from.localeCompare(b.from) || a.to.localeCompare(b.to) || a.text.localeCompare(b.text));
5039
- return edges;
4558
+ // ../core/src/bundle-ops.ts
4559
+ var defaultBackendFactory;
4560
+ function setDefaultBackendFactory(factory) {
4561
+ defaultBackendFactory = factory;
5040
4562
  }
5041
-
5042
- // ../core/src/bundle.ts
5043
4563
  function backendFor(bundle) {
5044
- return bundle.backend ?? new FilesystemBackend(bundle.root);
4564
+ if (bundle.backend) return bundle.backend;
4565
+ if (defaultBackendFactory === void 0) {
4566
+ throw new InvalidInputError(
4567
+ `Bundle '${bundle.root}' has no backend and this runtime installs no default: pass bundle.backend explicitly or register one with setDefaultBackendFactory.`
4568
+ );
4569
+ }
4570
+ return defaultBackendFactory(bundle.root);
5045
4571
  }
5046
4572
  async function readBundleOkfVersion2(bundle) {
5047
4573
  return readBundleOkfVersion(backendFor(bundle));
@@ -5049,24 +4575,27 @@ async function readBundleOkfVersion2(bundle) {
5049
4575
  async function readDocVersioned2(bundle, id) {
5050
4576
  return readDocVersioned(backendFor(bundle), id);
5051
4577
  }
5052
- async function query2(bundle, filter = {}, options2 = {}) {
5053
- return query(backendFor(bundle), filter, options2);
4578
+ async function query2(bundle, filter = {}, options = {}) {
4579
+ return query(backendFor(bundle), filter, options);
5054
4580
  }
5055
- async function queryHeads2(bundle, filter = {}, options2 = {}) {
5056
- return queryHeads(backendFor(bundle), filter, options2);
4581
+ async function queryHeads2(bundle, filter = {}, options = {}) {
4582
+ return queryHeads(backendFor(bundle), filter, options);
5057
4583
  }
5058
4584
  async function queryEdges2(bundle, filter = {}) {
5059
4585
  return queryEdges(backendFor(bundle), filter);
5060
4586
  }
5061
4587
 
4588
+ // ../core/src/bundle.ts
4589
+ setDefaultBackendFactory((root) => new FilesystemBackend(root));
4590
+
5062
4591
  // ../core/src/kinds.ts
5063
4592
  var CONVENTIONS_PREFIX = "conventions/";
5064
4593
  var CONVENTION_TYPE = "Convention";
5065
- function buildKindRegistry(docs, initialWarnings = []) {
4594
+ function buildKindRegistry(docs, initialWarnings = [], options = {}) {
5066
4595
  const kinds = /* @__PURE__ */ new Map();
5067
4596
  const warnings = [...initialWarnings];
5068
4597
  for (const doc of [...docs].sort((a, b) => a.id.localeCompare(b.id))) {
5069
- const parsed = parseConventionDoc(doc);
4598
+ const parsed = parseConventionDoc(doc, options);
5070
4599
  if (!parsed.ok) {
5071
4600
  warnings.push({
5072
4601
  code: "KIND_CONVENTION_MALFORMED",
@@ -5197,7 +4726,7 @@ function toStringArrayLenient(value, path4, docId, warnings) {
5197
4726
  }
5198
4727
  return out;
5199
4728
  }
5200
- var RESERVED_KIND_FIELD_NAMES = ["type", "dir", "remote", "json", "help", "body", "body-file"];
4729
+ var RESERVED_KIND_FIELD_NAMES = ["type", "dir", "remote", "json", "help", "body", "body-file", "stale-after"];
5201
4730
  var RESERVED_FIELD_NAMES = new Set(RESERVED_KIND_FIELD_NAMES);
5202
4731
  var VALID_FIELDS_KEYS = /* @__PURE__ */ new Set([
5203
4732
  "required",
@@ -5212,7 +4741,7 @@ var CLAIM_COORDINATE_KEYS = [
5212
4741
  ["owner_field", "ownerField"],
5213
4742
  ["state_field", "stateField"]
5214
4743
  ];
5215
- function parseConventionDoc(doc) {
4744
+ function parseConventionDoc(doc, options = {}) {
5216
4745
  const fm = doc.frontmatter;
5217
4746
  const governs = typeof fm.governs === "string" ? fm.governs.trim() : "";
5218
4747
  if (governs === "") {
@@ -5283,6 +4812,14 @@ function parseConventionDoc(doc) {
5283
4812
  }
5284
4813
  }
5285
4814
  }
4815
+ if (options.okfVersion === "0.2" && values.status?.some((value) => !isOkfLifecycleStatus(value))) {
4816
+ warnings.push({
4817
+ code: "OKF_WORKFLOW_STATUS_COLLISION",
4818
+ message: `kind convention '${doc.id}' declares 'fields.values.status' with values outside the OKF v0.2 lifecycle (${OKF_LIFECYCLE_STATUSES.join(", ")}); instance authoring rejects those values. Move workflow state to 'superbee_progress_status' (CLI '--progress_status') and migrate its required/optional, descriptions, values, value_descriptions, terminal declarations and instances.`,
4819
+ field: "fields.values.status",
4820
+ severity: "warning"
4821
+ });
4822
+ }
5286
4823
  const declaredFieldNames = /* @__PURE__ */ new Set([...required, ...optional]);
5287
4824
  for (const field of Object.keys(values)) {
5288
4825
  if (!declaredFieldNames.has(field)) {
@@ -5659,7 +5196,11 @@ async function loadKinds(bundle) {
5659
5196
  severity: "warning"
5660
5197
  })
5661
5198
  });
5662
- return buildKindRegistry(docs, warnings);
5199
+ const okfVersion = await readBundleOkfVersion2(bundle).catch((error) => {
5200
+ if (!(error instanceof MalformedDocumentError)) throw error;
5201
+ return void 0;
5202
+ });
5203
+ return buildKindRegistry(docs, warnings, { okfVersion });
5663
5204
  }
5664
5205
 
5665
5206
  // ../core/src/page.ts
@@ -5896,8 +5437,8 @@ function boundedRows(rows, params, kinds) {
5896
5437
  return applyQuerySelectionFilters(rows, { ...params, limit: requested }, kinds);
5897
5438
  }
5898
5439
  var BridgeService = class {
5899
- constructor(options2) {
5900
- this.options = options2;
5440
+ constructor(options) {
5441
+ this.options = options;
5901
5442
  }
5902
5443
  subscriptions = /* @__PURE__ */ new Map();
5903
5444
  nextPollGeneration = 0;
@@ -6159,16 +5700,16 @@ var PublicationError = class extends Error {
6159
5700
  actual;
6160
5701
  details;
6161
5702
  cause;
6162
- constructor(code, message, options2 = {}) {
5703
+ constructor(code, message, options = {}) {
6163
5704
  super(message);
6164
5705
  this.name = "PublicationError";
6165
5706
  this.code = code;
6166
- this.retryable = options2.retryable ?? false;
6167
- if (options2.subject !== void 0) this.subject = options2.subject;
6168
- if (options2.expected !== void 0) this.expected = options2.expected;
6169
- if (options2.actual !== void 0) this.actual = options2.actual;
6170
- if (options2.details !== void 0) this.details = options2.details;
6171
- if (options2.cause !== void 0) this.cause = options2.cause;
5707
+ this.retryable = options.retryable ?? false;
5708
+ if (options.subject !== void 0) this.subject = options.subject;
5709
+ if (options.expected !== void 0) this.expected = options.expected;
5710
+ if (options.actual !== void 0) this.actual = options.actual;
5711
+ if (options.details !== void 0) this.details = options.details;
5712
+ if (options.cause !== void 0) this.cause = options.cause;
6172
5713
  }
6173
5714
  };
6174
5715
  function isPublicationError(value) {
@@ -6278,17 +5819,17 @@ var PUBLICATION_BRIDGE_V0 = "v0";
6278
5819
  // ../publication/src/bridge.ts
6279
5820
  var STATIC_LAUNCH_ID = "publication-snapshot";
6280
5821
  function digest(bytes) {
6281
- return `sha256:${createHash4("sha256").update(bytes).digest("hex")}`;
5822
+ return `sha256:${createHash3("sha256").update(bytes).digest("hex")}`;
6282
5823
  }
6283
- function createPublicationBridge(options2) {
6284
- if (options2.protocol !== PUBLICATION_BRIDGE_V0) {
5824
+ function createPublicationBridge(options) {
5825
+ if (options.protocol !== PUBLICATION_BRIDGE_V0) {
6285
5826
  throw new PublicationError("CAPABILITY_UNAVAILABLE", "the requested publication bridge protocol is unsupported");
6286
5827
  }
6287
- const registration = options2.snapshot.manifest.views.find((view) => view.id === options2.admittedView.id);
5828
+ const registration = options.snapshot.manifest.views.find((view) => view.id === options.admittedView.id);
6288
5829
  if (registration?.access === "bundle-propose") {
6289
5830
  throw new PublicationError("INVALID_BRIDGE_ADMISSION", "static publication cannot admit a bundle-propose View");
6290
5831
  }
6291
- if (!registration || registration.entry !== options2.admittedView.entry || registration.access !== options2.admittedView.access || registration.entryObject.digest !== options2.admittedView.entryDigest) {
5832
+ if (!registration || registration.entry !== options.admittedView.entry || registration.access !== options.admittedView.access || registration.entryObject.digest !== options.admittedView.entryDigest) {
6292
5833
  throw new PublicationError("INVALID_BRIDGE_ADMISSION", "the admitted View does not exactly match the snapshot");
6293
5834
  }
6294
5835
  const capability = registration.access;
@@ -6299,8 +5840,8 @@ function createPublicationBridge(options2) {
6299
5840
  revoke() {
6300
5841
  }
6301
5842
  };
6302
- const documents = new Map(options2.snapshot.manifest.documents.map((row) => [row.id, row]));
6303
- const backend = new PublicationSnapshotBackend(options2.snapshot);
5843
+ const documents = new Map(options.snapshot.manifest.documents.map((row) => [row.id, row]));
5844
+ const backend = new PublicationSnapshotBackend(options.snapshot);
6304
5845
  return {
6305
5846
  async handle(rawRequest) {
6306
5847
  let rendered;
@@ -6308,7 +5849,7 @@ function createPublicationBridge(options2) {
6308
5849
  const id = rawRequest.docId;
6309
5850
  const row = documents.get(id);
6310
5851
  if (row) {
6311
- const bytes = await options2.snapshot.readObject(row.rendered.html);
5852
+ const bytes = await options.snapshot.readObject(row.rendered.html);
6312
5853
  if (digest(bytes) !== row.rendered.html.digest) {
6313
5854
  throw new PublicationError("OBJECT_DIGEST_MISMATCH", "rendered document digest mismatch", { subject: id });
6314
5855
  }
@@ -6346,21 +5887,3 @@ export {
6346
5887
  createPublicationBridge,
6347
5888
  isPublicationError
6348
5889
  };
6349
- /*! Bundled license information:
6350
-
6351
- is-extendable/index.js:
6352
- (*!
6353
- * is-extendable <https://github.com/jonschlinkert/is-extendable>
6354
- *
6355
- * Copyright (c) 2015, Jon Schlinkert.
6356
- * Licensed under the MIT License.
6357
- *)
6358
-
6359
- strip-bom-string/index.js:
6360
- (*!
6361
- * strip-bom-string <https://github.com/jonschlinkert/strip-bom-string>
6362
- *
6363
- * Copyright (c) 2015, 2017, Jon Schlinkert.
6364
- * Released under the MIT License.
6365
- *)
6366
- */