[d24f17c] | 1 | "use strict";
|
---|
| 2 |
|
---|
| 3 | var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
---|
| 4 | exports.__esModule = true;
|
---|
| 5 | exports.uriToPointer = exports.default = void 0;
|
---|
| 6 | var _ramda = require("ramda");
|
---|
| 7 | var _ramdaAdjunct = require("ramda-adjunct");
|
---|
| 8 | var _unescape = _interopRequireDefault(require("./unescape.cjs"));
|
---|
| 9 | var _InvalidJsonPointerError = _interopRequireDefault(require("./errors/InvalidJsonPointerError.cjs"));
|
---|
| 10 | // parse :: String -> String[]
|
---|
| 11 | const parse = pointer => {
|
---|
| 12 | if ((0, _ramdaAdjunct.isEmptyString)(pointer)) {
|
---|
| 13 | return [];
|
---|
| 14 | }
|
---|
| 15 | if (!(0, _ramda.startsWith)('/', pointer)) {
|
---|
| 16 | throw new _InvalidJsonPointerError.default(`Invalid JSON Pointer "${pointer}". JSON Pointers must begin with "/"`, {
|
---|
| 17 | pointer
|
---|
| 18 | });
|
---|
| 19 | }
|
---|
| 20 | try {
|
---|
| 21 | const tokens = (0, _ramda.pipe)((0, _ramda.split)('/'), (0, _ramda.map)(_unescape.default))(pointer);
|
---|
| 22 | return (0, _ramda.tail)(tokens);
|
---|
| 23 | } catch (error) {
|
---|
| 24 | throw new _InvalidJsonPointerError.default(`JSON Pointer parsing of "${pointer}" encountered an error.`, {
|
---|
| 25 | pointer,
|
---|
| 26 | cause: error
|
---|
| 27 | });
|
---|
| 28 | }
|
---|
| 29 | };
|
---|
| 30 |
|
---|
| 31 | /**
|
---|
| 32 | * Returns the hash (URL fragment), of the given path.
|
---|
| 33 | * If there is no hash, then the root hash ("#") is returned.
|
---|
| 34 | */
|
---|
| 35 | const getHash = uri => {
|
---|
| 36 | const hashIndex = uri.indexOf('#');
|
---|
| 37 | if (hashIndex !== -1) {
|
---|
| 38 | return uri.substring(hashIndex);
|
---|
| 39 | }
|
---|
| 40 | return '#';
|
---|
| 41 | };
|
---|
| 42 |
|
---|
| 43 | // uriToPointer :: String -> String
|
---|
| 44 | const uriToPointer = uri => {
|
---|
| 45 | const hash = getHash(uri);
|
---|
| 46 | return (0, _ramdaAdjunct.trimCharsStart)('#', hash);
|
---|
| 47 | };
|
---|
| 48 | exports.uriToPointer = uriToPointer;
|
---|
| 49 | var _default = exports.default = parse; |
---|