1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', { value: true });
|
4 |
|
5 | var helpers = require('./helpers.js');
|
6 |
|
7 | const handler = ({ path, identifier, key, index, i, k }) => ({
|
8 | get(target, property) {
|
9 | let x = helpers.getValueAtPath(path, target);
|
10 |
|
11 |
|
12 |
|
13 | if (property === identifier) {
|
14 | for (let n in x) {
|
15 | let v = x[n];
|
16 | if (key) {
|
17 | if (v[key] === k) return v
|
18 | } else {
|
19 | if (n == i) return v
|
20 | }
|
21 | }
|
22 | }
|
23 |
|
24 | if (property === index) {
|
25 | for (let n in x) {
|
26 | let v = x[n];
|
27 | if (key) {
|
28 | if (v[key] === k) return n
|
29 | } else {
|
30 | if (n == i) return n
|
31 | }
|
32 | }
|
33 | }
|
34 |
|
35 | let t = key ? x.find((v) => v[key] === k) : x[i];
|
36 | if (t?.hasOwnProperty?.(property)) return t[property]
|
37 |
|
38 | return Reflect.get(...arguments)
|
39 | },
|
40 | set(target, property, value) {
|
41 | let x = helpers.getValueAtPath(path, target);
|
42 | let t = key ? x.find((v) => v[key] === k) : x[i];
|
43 | if (t && !helpers.isPrimitive(t)) {
|
44 | t[property] = value;
|
45 | return true
|
46 | }
|
47 |
|
48 | return Reflect.set(...arguments)
|
49 | },
|
50 | });
|
51 |
|
52 | const createContext = (v = []) => {
|
53 | let context = v;
|
54 | return {
|
55 | get: () => context,
|
56 | push: (v) => context.push(v),
|
57 | wrap: (state) => {
|
58 | return context.reduce(
|
59 | (target, ctx) => new Proxy(target, handler(ctx)),
|
60 | state
|
61 | )
|
62 | },
|
63 | }
|
64 | };
|
65 |
|
66 | exports.createContext = createContext;
|