valyrian.js 8.0.13 → 8.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/native-store/index.d.ts +1 -1
- package/dist/lib/native-store/index.d.ts.map +1 -1
- package/dist/lib/node/index.d.ts +2 -2
- package/dist/lib/node/index.d.ts.map +1 -1
- package/dist/lib/node/utils/server-storage.d.ts +12 -0
- package/dist/lib/node/utils/server-storage.d.ts.map +1 -0
- package/dist/lib/node/utils/tree-adapter.d.ts.map +1 -1
- package/dist/lib/pulses/index.d.ts +4 -0
- package/dist/lib/pulses/index.d.ts.map +1 -1
- package/dist/lib/redux-devtools/index.d.ts +15 -0
- package/dist/lib/redux-devtools/index.d.ts.map +1 -0
- package/dist/lib/request/index.d.ts.map +1 -1
- package/dist/lib/translate/index.d.ts +6 -2
- package/dist/lib/translate/index.d.ts.map +1 -1
- package/dist/native-store/index.js +26 -13
- package/dist/native-store/index.js.map +3 -3
- package/dist/native-store/index.min.js +1 -1
- package/dist/native-store/index.min.js.map +1 -1
- package/dist/native-store/index.mjs +26 -13
- package/dist/native-store/index.mjs.map +3 -3
- package/dist/node/index.js +57 -94
- package/dist/node/index.js.map +4 -4
- package/dist/node/index.mjs +57 -94
- package/dist/node/index.mjs.map +4 -4
- package/dist/pulses/index.js +32 -1
- package/dist/pulses/index.js.map +2 -2
- package/dist/pulses/index.min.js +1 -1
- package/dist/pulses/index.min.js.map +1 -1
- package/dist/pulses/index.mjs +32 -1
- package/dist/pulses/index.mjs.map +2 -2
- package/dist/redux-devtools/index.js +81 -0
- package/dist/redux-devtools/index.js.map +7 -0
- package/dist/redux-devtools/index.min.js +1 -0
- package/dist/redux-devtools/index.min.js.map +1 -0
- package/dist/redux-devtools/index.mjs +60 -0
- package/dist/redux-devtools/index.mjs.map +7 -0
- package/dist/request/index.js +20 -7
- package/dist/request/index.js.map +2 -2
- package/dist/request/index.min.js +1 -1
- package/dist/request/index.min.js.map +1 -1
- package/dist/request/index.mjs +20 -7
- package/dist/request/index.mjs.map +2 -2
- package/dist/translate/index.js +36 -26
- package/dist/translate/index.js.map +3 -3
- package/dist/translate/index.min.js +1 -1
- package/dist/translate/index.min.js.map +1 -1
- package/dist/translate/index.mjs +36 -26
- package/dist/translate/index.mjs.map +3 -3
- package/lib/native-store/index.ts +22 -8
- package/lib/node/index.ts +4 -4
- package/lib/node/utils/server-storage.ts +71 -0
- package/lib/node/utils/tree-adapter.ts +25 -1
- package/lib/pulses/index.ts +54 -6
- package/lib/redux-devtools/index.ts +86 -0
- package/lib/request/index.ts +28 -8
- package/lib/translate/index.ts +37 -26
- package/package.json +14 -14
- package/dist/lib/node/utils/session-storage.d.ts +0 -22
- package/dist/lib/node/utils/session-storage.d.ts.map +0 -1
- package/lib/node/utils/session-storage.ts +0 -120
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../lib/pulses/index.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-console */\nimport { updateVnode, VnodeWithDom, current, DomElement } from \"valyrian.js\";\nimport { deepCloneUnfreeze, deepFreeze, hasChanged } from \"valyrian.js/utils\";\n\ntype State = Record<string, any>;\n\nexport type Pulse<StateType, TReturn = unknown> = (state: StateType, ...args: any[]) => TReturn | Promise<TReturn>;\n\nexport type Pulses<StateType> = Record<string, Pulse<StateType, any> & { $flush?: () => Promise<void> }>;\n\ntype ProxyState<StateType> = StateType & { [key: string]: any };\n\nconst effectStack: Function[] = [];\n\ntype StorePulses<PulsesType extends Pulses<any>> = {\n [K in keyof PulsesType]: PulsesType[K] extends (state: any, ...args: infer Args) => infer R\n ? (...args: Args) => R\n : never;\n};\n\n/** Funci\u00F3n auxiliar para registrar la suscripci\u00F3n al nodo DOM.\n * Retorna true si se agreg\u00F3 la suscripci\u00F3n, o false si se encontr\u00F3 un nodo padre ya suscrito.\n */\nfunction registerDomSubscription(subscribers: Set<Function>, domWithVnodesToUpdate: WeakSet<DomElement>): void {\n const currentVnode = current.vnode as VnodeWithDom;\n if (!currentVnode || domWithVnodesToUpdate.has(currentVnode.dom)) {\n return;\n }\n\n let hasParent = false;\n let parent = currentVnode.dom.parentElement as DomElement;\n while (parent) {\n if (domWithVnodesToUpdate.has(parent)) {\n hasParent = true;\n break;\n }\n parent = parent.parentElement as DomElement;\n }\n\n // Si no hay nodo padre registrado, se crea la suscripci\u00F3n.\n if (!hasParent) {\n const dom = currentVnode.dom;\n const subscription = () => {\n updateVnode(dom.vnode);\n if (!dom.parentElement) {\n subscribers.delete(subscription);\n domWithVnodesToUpdate.delete(dom);\n }\n };\n subscribers.add(subscription);\n domWithVnodesToUpdate.add(dom);\n }\n}\n\nfunction createStore<StateType extends State, PulsesType extends Pulses<StateType>>(\n initialState: StateType | (() => StateType) | null,\n pulses: PulsesType,\n immutable = false\n): StorePulses<PulsesType> & { state: ProxyState<StateType> } {\n const subscribers = new Set<Function>();\n const domWithVnodesToUpdate = new WeakSet<DomElement>();\n\n const boundPulses: Pulses<StateType> = {};\n for (const key in pulses) {\n if (typeof pulses[key] !== \"function\") {\n throw new Error(`Pulse '${key}' must be a function`);\n }\n if (key === \"state\") {\n throw new Error(`A pulse cannot be named 'state'`);\n }\n boundPulses[key] = getPulseMethod(key);\n }\n\n const localState: StateType =\n (typeof initialState === \"function\" ? initialState() : initialState) || ({} as StateType);\n\n function isMutable() {\n if (immutable) {\n throw new Error(\"You need to call a pulse to modify the state\");\n }\n }\n\n let currentState: StateType | null = null;\n let pulseCallCount = 0;\n\n const proxyState = new Proxy(localState, {\n get: (state, prop: string) => {\n // If we are in a pulse, we return the value of the cloned state.\n if (currentState) {\n return currentState[prop];\n }\n\n const currentEffect = effectStack[effectStack.length - 1];\n if (currentEffect && !subscribers.has(currentEffect)) {\n subscribers.add(currentEffect);\n }\n\n registerDomSubscription(subscribers, domWithVnodesToUpdate);\n\n return state[prop];\n },\n set: (state, prop: string, value: any) => {\n isMutable();\n Reflect.set(state, prop, value);\n return true;\n },\n deleteProperty: (state, prop: string) => {\n isMutable();\n Reflect.deleteProperty(state, prop);\n return true;\n }\n });\n\n function syncState(newState: StateType) {\n for (const key in newState) {\n localState[key] = immutable ? deepFreeze(newState[key]) : newState[key];\n }\n for (const key in localState) {\n if (!(key in newState)) {\n Reflect.deleteProperty(localState, key);\n }\n }\n }\n\n let debounceTimeout: ReturnType<typeof setTimeout> | null = null;\n function debouncedUpdate() {\n if (debounceTimeout) {\n clearTimeout(debounceTimeout);\n }\n debounceTimeout = setTimeout(() => subscribers.forEach((subscriber) => subscriber()), 0);\n }\n\n function setState(newState: StateType, flush = false) {\n pulseCallCount--;\n if (!hasChanged(localState, newState)) {\n return;\n }\n if (pulseCallCount > 0 && !flush) {\n return;\n }\n syncState(newState);\n currentState = null;\n debouncedUpdate();\n }\n\n function getPulseMethod(key: string) {\n function pulseMethod(this: Pulse<StateType, any> & { $flush: () => Promise<void> }, ...args: any[]) {\n pulseCallCount++;\n if (currentState === null) {\n currentState = deepCloneUnfreeze(localState);\n }\n\n const $flush = async () => {\n setState(currentState as StateType, true);\n currentState = deepCloneUnfreeze(localState);\n await new Promise((resolve) => setTimeout(resolve, 0));\n };\n\n Reflect.set(this, \"$flush\", $flush);\n const emptyFlush = async () => {};\n\n try {\n const pulseResult = pulses[key].apply(this, [currentState, ...args]);\n if (pulseResult instanceof Promise) {\n return pulseResult\n .then((resolvedValue) => {\n setState(currentState as StateType);\n Reflect.set(this, \"$flush\", emptyFlush);\n return resolvedValue;\n })\n .catch((error) => {\n console.error(`Error in pulse '${key}':`, error);\n Reflect.set(this, \"$flush\", emptyFlush);\n throw error;\n });\n } else {\n setState(currentState);\n Reflect.set(this, \"$flush\", emptyFlush);\n return pulseResult;\n }\n } catch (error) {\n console.error(`Error in pulse '${key}':`, error);\n Reflect.set(this, \"$flush\", emptyFlush);\n throw error;\n }\n }\n\n return pulseMethod;\n }\n\n syncState(localState);\n\n const pulsesProxy = new Proxy(boundPulses, {\n get: (pulses, prop: string) => {\n if (prop === \"state\") {\n return proxyState;\n }\n if (!(prop in pulses)) {\n throw new Error(`Pulse '${prop}' does not exist`);\n }\n const pulseMethod = pulses[prop];\n\n if (typeof pulseMethod === \"function\") {\n return pulseMethod.bind(pulsesProxy);\n }\n\n return pulseMethod;\n }\n });\n\n return pulsesProxy as StorePulses<PulsesType> & { state: ProxyState<StateType> };\n}\n\nexport function createPulseStore<StateType extends State, PulsesType extends Pulses<StateType>>(\n initialState: StateType,\n pulses: PulsesType\n): StorePulses<PulsesType> & { state: ProxyState<StateType> } {\n return createStore(initialState, pulses, true);\n}\n\nexport function createMutableStore<StateType extends State, PulsesType extends Pulses<StateType>>(\n initialState: StateType,\n pulses: PulsesType\n): StorePulses<PulsesType> & { state: ProxyState<StateType> } {\n console.warn(\n \"Warning: You are working with a mutable state. This can lead to unpredictable behavior. All state changes made outside of a pulse will not trigger a re-render.\"\n );\n return createStore(initialState, pulses, false);\n}\n\nexport function createEffect(effect: Function) {\n const runEffect = () => {\n try {\n effectStack.push(runEffect);\n effect();\n } finally {\n effectStack.pop();\n }\n };\n runEffect();\n}\n\nexport function createPulse<T>(initialValue: T): [() => T, (newValue: T | ((current: T) => T)) => void, () => void] {\n let value = initialValue;\n const subscribers = new Set<Function>();\n const domWithVnodesToUpdate = new WeakSet<DomElement>();\n\n const runSubscribers = () => {\n subscribers.forEach((subscriber) => subscriber());\n };\n\n const read = (): T => {\n const currentEffect = effectStack[effectStack.length - 1];\n if (currentEffect && !subscribers.has(currentEffect)) {\n subscribers.add(currentEffect);\n }\n registerDomSubscription(subscribers, domWithVnodesToUpdate);\n return value;\n };\n\n const write = (newValue: T | ((current: T) => T)): void => {\n const resolvedValue = typeof newValue === \"function\" ? (newValue as (current: T) => T)(value) : newValue;\n if (!hasChanged(value, resolvedValue)) {\n return;\n }\n value = resolvedValue;\n runSubscribers();\n };\n\n return [read, write, runSubscribers];\n}\n"],
|
|
5
|
-
"mappings": ";AACA,SAAS,aAA2B,eAA2B;AAC/D,SAAS,mBAAmB,YAAY,kBAAkB;AAU1D,IAAM,cAA0B,CAAC;AAWjC,SAAS,wBAAwB,aAA4B,uBAAkD;AAC7G,QAAM,eAAe,QAAQ;AAC7B,MAAI,CAAC,gBAAgB,sBAAsB,IAAI,aAAa,GAAG,GAAG;AAChE;AAAA,EACF;AAEA,MAAI,YAAY;AAChB,MAAI,SAAS,aAAa,IAAI;AAC9B,SAAO,QAAQ;AACb,QAAI,sBAAsB,IAAI,MAAM,GAAG;AACrC,kBAAY;AACZ;AAAA,IACF;AACA,aAAS,OAAO;AAAA,EAClB;AAGA,MAAI,CAAC,WAAW;AACd,UAAM,MAAM,aAAa;AACzB,UAAM,eAAe,MAAM;AACzB,kBAAY,IAAI,KAAK;AACrB,UAAI,CAAC,IAAI,eAAe;AACtB,oBAAY,OAAO,YAAY;AAC/B,8BAAsB,OAAO,GAAG;AAAA,MAClC;AAAA,IACF;AACA,gBAAY,IAAI,YAAY;AAC5B,0BAAsB,IAAI,GAAG;AAAA,EAC/B;AACF;AAEA,SAAS,YACP,cACA,QACA,YAAY,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-console */\nimport { updateVnode, VnodeWithDom, current, DomElement } from \"valyrian.js\";\nimport { deepCloneUnfreeze, deepFreeze, hasChanged } from \"valyrian.js/utils\";\n\ntype State = Record<string, any>;\n\nexport type Pulse<StateType, TReturn = unknown> = (state: StateType, ...args: any[]) => TReturn | Promise<TReturn>;\n\nexport type Pulses<StateType> = Record<string, Pulse<StateType, any> & { $flush?: () => Promise<void> }>;\n\ntype ProxyState<StateType> = StateType & { [key: string]: any };\n\nconst effectStack: Function[] = [];\n\ntype StorePulses<PulsesType extends Pulses<any>> = {\n [K in keyof PulsesType]: PulsesType[K] extends (state: any, ...args: infer Args) => infer R\n ? (...args: Args) => R\n : never;\n};\n\n/** Funci\u00F3n auxiliar para registrar la suscripci\u00F3n al nodo DOM.\n * Retorna true si se agreg\u00F3 la suscripci\u00F3n, o false si se encontr\u00F3 un nodo padre ya suscrito.\n */\nfunction registerDomSubscription(subscribers: Set<Function>, domWithVnodesToUpdate: WeakSet<DomElement>): void {\n const currentVnode = current.vnode as VnodeWithDom;\n if (!currentVnode || domWithVnodesToUpdate.has(currentVnode.dom)) {\n return;\n }\n\n let hasParent = false;\n let parent = currentVnode.dom.parentElement as DomElement;\n while (parent) {\n if (domWithVnodesToUpdate.has(parent)) {\n hasParent = true;\n break;\n }\n parent = parent.parentElement as DomElement;\n }\n\n // Si no hay nodo padre registrado, se crea la suscripci\u00F3n.\n if (!hasParent) {\n const dom = currentVnode.dom;\n const subscription = () => {\n updateVnode(dom.vnode);\n if (!dom.parentElement) {\n subscribers.delete(subscription);\n domWithVnodesToUpdate.delete(dom);\n }\n };\n subscribers.add(subscription);\n domWithVnodesToUpdate.add(dom);\n }\n}\n\nfunction createStore<StateType extends State, PulsesType extends Pulses<StateType>>(\n initialState: StateType | (() => StateType) | null,\n pulses: PulsesType,\n immutable = false\n): StorePulses<PulsesType> & {\n state: ProxyState<StateType>;\n on: (event: string, callback: Function) => void;\n off: (event: string, callback: Function) => void;\n} {\n const subscribers = new Set<Function>();\n const domWithVnodesToUpdate = new WeakSet<DomElement>();\n\n const boundPulses: Pulses<StateType> = {};\n for (const key in pulses) {\n if (typeof pulses[key] !== \"function\") {\n throw new Error(`Pulse '${key}' must be a function`);\n }\n if (key === \"state\") {\n throw new Error(`A pulse cannot be named 'state'`);\n }\n boundPulses[key] = getPulseMethod(key);\n }\n\n const localState: StateType =\n (typeof initialState === \"function\" ? initialState() : initialState) || ({} as StateType);\n\n function isMutable() {\n if (immutable) {\n throw new Error(\"You need to call a pulse to modify the state\");\n }\n }\n\n let currentState: StateType | null = null;\n let pulseCallCount = 0;\n\n const proxyState = new Proxy(localState, {\n get: (state, prop: string) => {\n // If we are in a pulse, we return the value of the cloned state.\n if (currentState) {\n return currentState[prop];\n }\n\n const currentEffect = effectStack[effectStack.length - 1];\n if (currentEffect && !subscribers.has(currentEffect)) {\n subscribers.add(currentEffect);\n }\n\n registerDomSubscription(subscribers, domWithVnodesToUpdate);\n\n return state[prop];\n },\n set: (state, prop: string, value: any) => {\n isMutable();\n Reflect.set(state, prop, value);\n return true;\n },\n deleteProperty: (state, prop: string) => {\n isMutable();\n Reflect.deleteProperty(state, prop);\n return true;\n }\n });\n\n function syncState(newState: StateType) {\n for (const key in newState) {\n localState[key] = immutable ? deepFreeze(newState[key]) : newState[key];\n }\n for (const key in localState) {\n if (!(key in newState)) {\n Reflect.deleteProperty(localState, key);\n }\n }\n }\n\n let debounceTimeout: ReturnType<typeof setTimeout> | null = null;\n function debouncedUpdate() {\n if (debounceTimeout) {\n clearTimeout(debounceTimeout);\n }\n debounceTimeout = setTimeout(() => subscribers.forEach((subscriber) => subscriber()), 0);\n }\n\n function setState(newState: StateType, flush = false) {\n pulseCallCount--;\n if (!hasChanged(localState, newState)) {\n return;\n }\n if (pulseCallCount > 0 && !flush) {\n return;\n }\n syncState(newState);\n currentState = null;\n debouncedUpdate();\n }\n\n function getPulseMethod(key: string) {\n function pulseMethod(this: Pulse<StateType, any> & { $flush: () => Promise<void> }, ...args: any[]) {\n pulseCallCount++;\n if (currentState === null) {\n currentState = deepCloneUnfreeze(localState);\n }\n\n const $flush = async () => {\n setState(currentState as StateType, true);\n currentState = deepCloneUnfreeze(localState);\n await new Promise((resolve) => setTimeout(resolve, 0));\n };\n\n Reflect.set(this, \"$flush\", $flush);\n const emptyFlush = async () => {};\n\n try {\n const pulseResult = pulses[key].apply(this, [currentState, ...args] as any);\n if (pulseResult instanceof Promise) {\n return pulseResult\n .then((resolvedValue) => {\n setState(currentState as StateType);\n Reflect.set(this, \"$flush\", emptyFlush);\n return resolvedValue;\n })\n .catch((error) => {\n console.error(`Error in pulse '${key}':`, error);\n Reflect.set(this, \"$flush\", emptyFlush);\n throw error;\n });\n } else {\n setState(currentState);\n Reflect.set(this, \"$flush\", emptyFlush);\n return pulseResult;\n }\n } catch (error) {\n console.error(`Error in pulse '${key}':`, error);\n Reflect.set(this, \"$flush\", emptyFlush);\n throw error;\n }\n }\n\n return pulseMethod;\n }\n\n syncState(localState);\n\n const listeners: Record<string, Function[]> = {};\n const trigger = (event: string, ...args: any[]) => {\n if (listeners[event]) {\n listeners[event].forEach((callback) => callback(...args));\n }\n };\n\n const pulsesProxy = new Proxy(boundPulses, {\n get: (pulses, prop: string) => {\n if (prop === \"state\") {\n return proxyState;\n }\n if (prop === \"on\") {\n return (event: string, callback: Function) => {\n if (!listeners[event]) {\n listeners[event] = [];\n }\n listeners[event].push(callback);\n };\n }\n if (prop === \"off\") {\n return (event: string, callback: Function) => {\n if (listeners[event]) {\n listeners[event] = listeners[event].filter((cb) => cb !== callback);\n }\n };\n }\n if (!(prop in pulses)) {\n throw new Error(`Pulse '${prop}' does not exist`);\n }\n const pulseMethod = pulses[prop];\n\n if (typeof pulseMethod === \"function\") {\n return (...args: any[]) => {\n const result = pulseMethod.apply(pulsesProxy, args as any);\n if (result instanceof Promise) {\n return result.then((r) => {\n trigger(\"pulse\", prop, args);\n return r;\n });\n }\n trigger(\"pulse\", prop, args);\n return result;\n };\n }\n\n return pulseMethod;\n }\n });\n\n return pulsesProxy as StorePulses<PulsesType> & {\n state: ProxyState<StateType>;\n on: (event: string, callback: Function) => void;\n off: (event: string, callback: Function) => void;\n };\n}\n\nexport function createPulseStore<StateType extends State, PulsesType extends Pulses<StateType>>(\n initialState: StateType,\n pulses: PulsesType\n): StorePulses<PulsesType> & {\n state: ProxyState<StateType>;\n on: (event: string, callback: Function) => void;\n off: (event: string, callback: Function) => void;\n} {\n return createStore(initialState, pulses, true);\n}\n\nexport function createMutableStore<StateType extends State, PulsesType extends Pulses<StateType>>(\n initialState: StateType,\n pulses: PulsesType\n): StorePulses<PulsesType> & {\n state: ProxyState<StateType>;\n on: (event: string, callback: Function) => void;\n off: (event: string, callback: Function) => void;\n} {\n console.warn(\n \"Warning: You are working with a mutable state. This can lead to unpredictable behavior. All state changes made outside of a pulse will not trigger a re-render.\"\n );\n return createStore(initialState, pulses, false);\n}\n\nexport function createEffect(effect: Function) {\n const runEffect = () => {\n try {\n effectStack.push(runEffect);\n effect();\n } finally {\n effectStack.pop();\n }\n };\n runEffect();\n}\n\nexport function createPulse<T>(initialValue: T): [() => T, (newValue: T | ((current: T) => T)) => void, () => void] {\n let value = initialValue;\n const subscribers = new Set<Function>();\n const domWithVnodesToUpdate = new WeakSet<DomElement>();\n\n const runSubscribers = () => {\n subscribers.forEach((subscriber) => subscriber());\n };\n\n const read = (): T => {\n const currentEffect = effectStack[effectStack.length - 1];\n if (currentEffect && !subscribers.has(currentEffect)) {\n subscribers.add(currentEffect);\n }\n registerDomSubscription(subscribers, domWithVnodesToUpdate);\n return value;\n };\n\n const write = (newValue: T | ((current: T) => T)): void => {\n const resolvedValue = typeof newValue === \"function\" ? (newValue as (current: T) => T)(value) : newValue;\n if (!hasChanged(value, resolvedValue)) {\n return;\n }\n value = resolvedValue;\n runSubscribers();\n };\n\n return [read, write, runSubscribers];\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["pulses"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// lib/redux-devtools/index.ts
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
connectFluxStore: () => connectFluxStore,
|
|
24
|
+
connectPulse: () => connectPulse,
|
|
25
|
+
connectPulseStore: () => connectPulseStore
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(index_exports);
|
|
28
|
+
function getDevTools() {
|
|
29
|
+
const isBrowser = typeof window !== "undefined";
|
|
30
|
+
if (isBrowser && window.__REDUX_DEVTOOLS_EXTENSION__) {
|
|
31
|
+
return window.__REDUX_DEVTOOLS_EXTENSION__;
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
function connectFluxStore(store, options = {}) {
|
|
36
|
+
const devTools = getDevTools();
|
|
37
|
+
if (!devTools) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const name = options.name || "FluxStore";
|
|
41
|
+
const dt = devTools.connect({ name, ...options });
|
|
42
|
+
dt.init(store.state);
|
|
43
|
+
store.on("commit", (_, mutation, ...args) => {
|
|
44
|
+
dt.send({ type: mutation, payload: args }, store.state);
|
|
45
|
+
});
|
|
46
|
+
store.on("registerModule", (_, namespace) => {
|
|
47
|
+
dt.send({ type: `[Module] Register: ${namespace}` }, store.state);
|
|
48
|
+
});
|
|
49
|
+
store.on("unregisterModule", (_, namespace) => {
|
|
50
|
+
dt.send({ type: `[Module] Unregister: ${namespace}` }, store.state);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function connectPulseStore(store, options = {}) {
|
|
54
|
+
const devTools = getDevTools();
|
|
55
|
+
if (!devTools) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const name = options.name || "PulseStore";
|
|
59
|
+
const dt = devTools.connect({ name, ...options });
|
|
60
|
+
dt.init(store.state);
|
|
61
|
+
if (store.on) {
|
|
62
|
+
store.on("pulse", (pulse, args) => {
|
|
63
|
+
dt.send({ type: pulse, payload: args }, store.state);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function connectPulse(pulse, options = {}) {
|
|
68
|
+
const devTools = getDevTools();
|
|
69
|
+
if (!devTools) {
|
|
70
|
+
return pulse;
|
|
71
|
+
}
|
|
72
|
+
const name = options.name || "Pulse";
|
|
73
|
+
const dt = devTools.connect({ name, ...options });
|
|
74
|
+
const [read, write, run] = pulse;
|
|
75
|
+
dt.init(read());
|
|
76
|
+
const newWrite = (newValue) => {
|
|
77
|
+
write(newValue);
|
|
78
|
+
dt.send({ type: "update", payload: newValue }, read());
|
|
79
|
+
};
|
|
80
|
+
return [read, newWrite, run];
|
|
81
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../lib/redux-devtools/index.ts"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-console */\nimport { FluxStore } from \"valyrian.js/flux-store\";\n\ndeclare global {\n interface Window {\n __REDUX_DEVTOOLS_EXTENSION__: any;\n }\n}\n\ninterface DevToolsOptions {\n name?: string;\n [key: string]: any;\n}\n\nfunction getDevTools() {\n const isBrowser = typeof window !== \"undefined\";\n if (isBrowser && window.__REDUX_DEVTOOLS_EXTENSION__) {\n return window.__REDUX_DEVTOOLS_EXTENSION__;\n }\n return null;\n}\n\nexport function connectFluxStore(store: FluxStore, options: DevToolsOptions = {}) {\n const devTools = getDevTools();\n if (!devTools) {\n return;\n }\n\n const name = options.name || \"FluxStore\";\n const dt = devTools.connect({ name, ...options });\n dt.init(store.state);\n\n store.on(\"commit\", (_: any, mutation: string, ...args: any[]) => {\n dt.send({ type: mutation, payload: args }, store.state);\n });\n\n store.on(\"registerModule\", (_: any, namespace: string) => {\n dt.send({ type: `[Module] Register: ${namespace}` }, store.state);\n });\n\n store.on(\"unregisterModule\", (_: any, namespace: string) => {\n dt.send({ type: `[Module] Unregister: ${namespace}` }, store.state);\n });\n}\n\nexport function connectPulseStore(store: any, options: DevToolsOptions = {}) {\n const devTools = getDevTools();\n if (!devTools) {\n return;\n }\n\n const name = options.name || \"PulseStore\";\n const dt = devTools.connect({ name, ...options });\n dt.init(store.state);\n\n if (store.on) {\n store.on(\"pulse\", (pulse: string, args: any[]) => {\n dt.send({ type: pulse, payload: args }, store.state);\n });\n }\n}\n\nexport function connectPulse(pulse: any, options: DevToolsOptions = {}) {\n // Pulse is [read, write, runSubscribers]\n // We can't easily hook into the write function without wrapping it.\n // But the user asked for \"simple\" and \"using existing apis\".\n // If we want to debug individual pulses, we might need to wrap them.\n\n const devTools = getDevTools();\n if (!devTools) {\n return pulse;\n }\n\n const name = options.name || \"Pulse\";\n const dt = devTools.connect({ name, ...options });\n const [read, write, run] = pulse;\n \n dt.init(read());\n\n const newWrite = (newValue: any) => {\n write(newValue);\n dt.send({ type: \"update\", payload: newValue }, read());\n };\n\n return [read, newWrite, run];\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcA,SAAS,cAAc;AACrB,QAAM,YAAY,OAAO,WAAW;AACpC,MAAI,aAAa,OAAO,8BAA8B;AACpD,WAAO,OAAO;AAAA,EAChB;AACA,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAkB,UAA2B,CAAC,GAAG;AAChF,QAAM,WAAW,YAAY;AAC7B,MAAI,CAAC,UAAU;AACb;AAAA,EACF;AAEA,QAAM,OAAO,QAAQ,QAAQ;AAC7B,QAAM,KAAK,SAAS,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;AAChD,KAAG,KAAK,MAAM,KAAK;AAEnB,QAAM,GAAG,UAAU,CAAC,GAAQ,aAAqB,SAAgB;AAC/D,OAAG,KAAK,EAAE,MAAM,UAAU,SAAS,KAAK,GAAG,MAAM,KAAK;AAAA,EACxD,CAAC;AAED,QAAM,GAAG,kBAAkB,CAAC,GAAQ,cAAsB;AACxD,OAAG,KAAK,EAAE,MAAM,sBAAsB,SAAS,GAAG,GAAG,MAAM,KAAK;AAAA,EAClE,CAAC;AAED,QAAM,GAAG,oBAAoB,CAAC,GAAQ,cAAsB;AAC1D,OAAG,KAAK,EAAE,MAAM,wBAAwB,SAAS,GAAG,GAAG,MAAM,KAAK;AAAA,EACpE,CAAC;AACH;AAEO,SAAS,kBAAkB,OAAY,UAA2B,CAAC,GAAG;AAC3E,QAAM,WAAW,YAAY;AAC7B,MAAI,CAAC,UAAU;AACb;AAAA,EACF;AAEA,QAAM,OAAO,QAAQ,QAAQ;AAC7B,QAAM,KAAK,SAAS,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;AAChD,KAAG,KAAK,MAAM,KAAK;AAEnB,MAAI,MAAM,IAAI;AACZ,UAAM,GAAG,SAAS,CAAC,OAAe,SAAgB;AAChD,SAAG,KAAK,EAAE,MAAM,OAAO,SAAS,KAAK,GAAG,MAAM,KAAK;AAAA,IACrD,CAAC;AAAA,EACH;AACF;AAEO,SAAS,aAAa,OAAY,UAA2B,CAAC,GAAG;AAMtE,QAAM,WAAW,YAAY;AAC7B,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,QAAQ,QAAQ;AAC7B,QAAM,KAAK,SAAS,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;AAChD,QAAM,CAAC,MAAM,OAAO,GAAG,IAAI;AAE3B,KAAG,KAAK,KAAK,CAAC;AAEd,QAAM,WAAW,CAAC,aAAkB;AAClC,UAAM,QAAQ;AACd,OAAG,KAAK,EAAE,MAAM,UAAU,SAAS,SAAS,GAAG,KAAK,CAAC;AAAA,EACvD;AAEA,SAAO,CAAC,MAAM,UAAU,GAAG;AAC7B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(()=>{"use strict";var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,r={};((t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})})(r,{connectFluxStore:()=>a,connectPulse:()=>l,connectPulseStore:()=>i});var u,s=(u=r,((r,u,s,c)=>{if(u&&"object"==typeof u||"function"==typeof u)for(let a of n(u))o.call(r,a)||a===s||e(r,a,{get:()=>u[a],enumerable:!(c=t(u,a))||c.enumerable});return r})(e({},"__esModule",{value:!0}),u));function c(){return"undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION__?window.__REDUX_DEVTOOLS_EXTENSION__:null}function a(e,t={}){const n=c();if(!n)return;const o=t.name||"FluxStore",r=n.connect({name:o,...t});r.init(e.state),e.on("commit",(t,n,...o)=>{r.send({type:n,payload:o},e.state)}),e.on("registerModule",(t,n)=>{r.send({type:`[Module] Register: ${n}`},e.state)}),e.on("unregisterModule",(t,n)=>{r.send({type:`[Module] Unregister: ${n}`},e.state)})}function i(e,t={}){const n=c();if(!n)return;const o=t.name||"PulseStore",r=n.connect({name:o,...t});r.init(e.state),e.on&&e.on("pulse",(t,n)=>{r.send({type:t,payload:n},e.state)})}function l(e,t={}){const n=c();if(!n)return e;const o=t.name||"Pulse",r=n.connect({name:o,...t}),[u,s,a]=e;r.init(u());return[u,e=>{s(e),r.send({type:"update",payload:e},u())},a]}"undefined"!=typeof module?module.exports=s:self.ValyrianReduxDevtools=s})();//# sourceMappingURL=index.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmRleF9leHBvcnRzIiwiX19leHBvcnQiLCJjb25uZWN0Rmx1eFN0b3JlIiwiY29ubmVjdFB1bHNlIiwiY29ubmVjdFB1bHNlU3RvcmUiLCJfX0VYUE9SVFNfXyIsImdldERldlRvb2xzIiwid2luZG93IiwiX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXyIsInN0b3JlIiwib3B0aW9ucyIsImRldlRvb2xzIiwibmFtZSIsImR0IiwiY29ubmVjdCIsImluaXQiLCJzdGF0ZSIsIm9uIiwiXyIsIm11dGF0aW9uIiwiYXJncyIsInNlbmQiLCJ0eXBlIiwicGF5bG9hZCIsIm5hbWVzcGFjZSIsInB1bHNlIiwicmVhZCIsIndyaXRlIiwicnVuIiwibmV3VmFsdWUiXSwic291cmNlcyI6WyIuLi8uLi9saWIvcmVkdXgtZGV2dG9vbHMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgRmx1eFN0b3JlIH0gZnJvbSBcInZhbHlyaWFuLmpzL2ZsdXgtc3RvcmVcIjtcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fOiBhbnk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIERldlRvb2xzT3B0aW9ucyB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZnVuY3Rpb24gZ2V0RGV2VG9vbHMoKSB7XG4gIGNvbnN0IGlzQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCI7XG4gIGlmIChpc0Jyb3dzZXIgJiYgd2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18pIHtcbiAgICByZXR1cm4gd2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX187XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25uZWN0Rmx1eFN0b3JlKHN0b3JlOiBGbHV4U3RvcmUsIG9wdGlvbnM6IERldlRvb2xzT3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGRldlRvb2xzID0gZ2V0RGV2VG9vbHMoKTtcbiAgaWYgKCFkZXZUb29scykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG5hbWUgPSBvcHRpb25zLm5hbWUgfHwgXCJGbHV4U3RvcmVcIjtcbiAgY29uc3QgZHQgPSBkZXZUb29scy5jb25uZWN0KHsgbmFtZSwgLi4ub3B0aW9ucyB9KTtcbiAgZHQuaW5pdChzdG9yZS5zdGF0ZSk7XG5cbiAgc3RvcmUub24oXCJjb21taXRcIiwgKF86IGFueSwgbXV0YXRpb246IHN0cmluZywgLi4uYXJnczogYW55W10pID0+IHtcbiAgICBkdC5zZW5kKHsgdHlwZTogbXV0YXRpb24sIHBheWxvYWQ6IGFyZ3MgfSwgc3RvcmUuc3RhdGUpO1xuICB9KTtcblxuICBzdG9yZS5vbihcInJlZ2lzdGVyTW9kdWxlXCIsIChfOiBhbnksIG5hbWVzcGFjZTogc3RyaW5nKSA9PiB7XG4gICAgZHQuc2VuZCh7IHR5cGU6IGBbTW9kdWxlXSBSZWdpc3RlcjogJHtuYW1lc3BhY2V9YCB9LCBzdG9yZS5zdGF0ZSk7XG4gIH0pO1xuXG4gIHN0b3JlLm9uKFwidW5yZWdpc3Rlck1vZHVsZVwiLCAoXzogYW55LCBuYW1lc3BhY2U6IHN0cmluZykgPT4ge1xuICAgIGR0LnNlbmQoeyB0eXBlOiBgW01vZHVsZV0gVW5yZWdpc3RlcjogJHtuYW1lc3BhY2V9YCB9LCBzdG9yZS5zdGF0ZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29ubmVjdFB1bHNlU3RvcmUoc3RvcmU6IGFueSwgb3B0aW9uczogRGV2VG9vbHNPcHRpb25zID0ge30pIHtcbiAgY29uc3QgZGV2VG9vbHMgPSBnZXREZXZUb29scygpO1xuICBpZiAoIWRldlRvb2xzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgbmFtZSA9IG9wdGlvbnMubmFtZSB8fCBcIlB1bHNlU3RvcmVcIjtcbiAgY29uc3QgZHQgPSBkZXZUb29scy5jb25uZWN0KHsgbmFtZSwgLi4ub3B0aW9ucyB9KTtcbiAgZHQuaW5pdChzdG9yZS5zdGF0ZSk7XG5cbiAgaWYgKHN0b3JlLm9uKSB7XG4gICAgc3RvcmUub24oXCJwdWxzZVwiLCAocHVsc2U6IHN0cmluZywgYXJnczogYW55W10pID0+IHtcbiAgICAgIGR0LnNlbmQoeyB0eXBlOiBwdWxzZSwgcGF5bG9hZDogYXJncyB9LCBzdG9yZS5zdGF0ZSk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbm5lY3RQdWxzZShwdWxzZTogYW55LCBvcHRpb25zOiBEZXZUb29sc09wdGlvbnMgPSB7fSkge1xuICAvLyBQdWxzZSBpcyBbcmVhZCwgd3JpdGUsIHJ1blN1YnNjcmliZXJzXVxuICAvLyBXZSBjYW4ndCBlYXNpbHkgaG9vayBpbnRvIHRoZSB3cml0ZSBmdW5jdGlvbiB3aXRob3V0IHdyYXBwaW5nIGl0LlxuICAvLyBCdXQgdGhlIHVzZXIgYXNrZWQgZm9yIFwic2ltcGxlXCIgYW5kIFwidXNpbmcgZXhpc3RpbmcgYXBpc1wiLlxuICAvLyBJZiB3ZSB3YW50IHRvIGRlYnVnIGluZGl2aWR1YWwgcHVsc2VzLCB3ZSBtaWdodCBuZWVkIHRvIHdyYXAgdGhlbS5cblxuICBjb25zdCBkZXZUb29scyA9IGdldERldlRvb2xzKCk7XG4gIGlmICghZGV2VG9vbHMpIHtcbiAgICByZXR1cm4gcHVsc2U7XG4gIH1cblxuICBjb25zdCBuYW1lID0gb3B0aW9ucy5uYW1lIHx8IFwiUHVsc2VcIjtcbiAgY29uc3QgZHQgPSBkZXZUb29scy5jb25uZWN0KHsgbmFtZSwgLi4ub3B0aW9ucyB9KTtcbiAgY29uc3QgW3JlYWQsIHdyaXRlLCBydW5dID0gcHVsc2U7XG4gIFxuICBkdC5pbml0KHJlYWQoKSk7XG5cbiAgY29uc3QgbmV3V3JpdGUgPSAobmV3VmFsdWU6IGFueSkgPT4ge1xuICAgIHdyaXRlKG5ld1ZhbHVlKTtcbiAgICBkdC5zZW5kKHsgdHlwZTogXCJ1cGRhdGVcIiwgcGF5bG9hZDogbmV3VmFsdWUgfSwgcmVhZCgpKTtcbiAgfTtcblxuICByZXR1cm4gW3JlYWQsIG5ld1dyaXRlLCBydW5dO1xufVxuIl0sIm1hcHBpbmdzIjoiZ0pBQUFBLEVBQUEsRyx5REFBQUMsQ0FBQUQsRUFBQSxDQUFBRSxpQkFBQSxJQUFBQSxFQUFBQyxhQUFBLElBQUFBLEVBQUFDLGtCQUFBLElBQUFBLElBQUEsSSxFQUFBQyxHLEVBQUFMLEUsME1BY0EsU0FBU00sSUFFUCxNQURvQyxvQkFBWEMsUUFDUkEsT0FBT0MsNkJBQ2ZELE9BQU9DLDZCQUVULElBQ1QsQ0FFTyxTQUFTTixFQUFpQk8sRUFBa0JDLEVBQTJCLENBQUMsR0FDN0UsTUFBTUMsRUFBV0wsSUFDakIsSUFBS0ssRUFDSCxPQUdGLE1BQU1DLEVBQU9GLEVBQVFFLE1BQVEsWUFDdkJDLEVBQUtGLEVBQVNHLFFBQVEsQ0FBRUYsVUFBU0YsSUFDdkNHLEVBQUdFLEtBQUtOLEVBQU1PLE9BRWRQLEVBQU1RLEdBQUcsU0FBVSxDQUFDQyxFQUFRQyxLQUFxQkMsS0FDL0NQLEVBQUdRLEtBQUssQ0FBRUMsS0FBTUgsRUFBVUksUUFBU0gsR0FBUVgsRUFBTU8sU0FHbkRQLEVBQU1RLEdBQUcsaUJBQWtCLENBQUNDLEVBQVFNLEtBQ2xDWCxFQUFHUSxLQUFLLENBQUVDLEtBQU0sc0JBQXNCRSxLQUFlZixFQUFNTyxTQUc3RFAsRUFBTVEsR0FBRyxtQkFBb0IsQ0FBQ0MsRUFBUU0sS0FDcENYLEVBQUdRLEtBQUssQ0FBRUMsS0FBTSx3QkFBd0JFLEtBQWVmLEVBQU1PLFFBRWpFLENBRU8sU0FBU1osRUFBa0JLLEVBQVlDLEVBQTJCLENBQUMsR0FDeEUsTUFBTUMsRUFBV0wsSUFDakIsSUFBS0ssRUFDSCxPQUdGLE1BQU1DLEVBQU9GLEVBQVFFLE1BQVEsYUFDdkJDLEVBQUtGLEVBQVNHLFFBQVEsQ0FBRUYsVUFBU0YsSUFDdkNHLEVBQUdFLEtBQUtOLEVBQU1PLE9BRVZQLEVBQU1RLElBQ1JSLEVBQU1RLEdBQUcsUUFBUyxDQUFDUSxFQUFlTCxLQUNoQ1AsRUFBR1EsS0FBSyxDQUFFQyxLQUFNRyxFQUFPRixRQUFTSCxHQUFRWCxFQUFNTyxRQUdwRCxDQUVPLFNBQVNiLEVBQWFzQixFQUFZZixFQUEyQixDQUFDLEdBTW5FLE1BQU1DLEVBQVdMLElBQ2pCLElBQUtLLEVBQ0gsT0FBT2MsRUFHVCxNQUFNYixFQUFPRixFQUFRRSxNQUFRLFFBQ3ZCQyxFQUFLRixFQUFTRyxRQUFRLENBQUVGLFVBQVNGLEtBQ2hDZ0IsRUFBTUMsRUFBT0MsR0FBT0gsRUFFM0JaLEVBQUdFLEtBQUtXLEtBT1IsTUFBTyxDQUFDQSxFQUxVRyxJQUNoQkYsRUFBTUUsR0FDTmhCLEVBQUdRLEtBQUssQ0FBRUMsS0FBTSxTQUFVQyxRQUFTTSxHQUFZSCxNQUd6QkUsRUFDMUIsQyJ9
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// lib/redux-devtools/index.ts
|
|
2
|
+
function getDevTools() {
|
|
3
|
+
const isBrowser = typeof window !== "undefined";
|
|
4
|
+
if (isBrowser && window.__REDUX_DEVTOOLS_EXTENSION__) {
|
|
5
|
+
return window.__REDUX_DEVTOOLS_EXTENSION__;
|
|
6
|
+
}
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
function connectFluxStore(store, options = {}) {
|
|
10
|
+
const devTools = getDevTools();
|
|
11
|
+
if (!devTools) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const name = options.name || "FluxStore";
|
|
15
|
+
const dt = devTools.connect({ name, ...options });
|
|
16
|
+
dt.init(store.state);
|
|
17
|
+
store.on("commit", (_, mutation, ...args) => {
|
|
18
|
+
dt.send({ type: mutation, payload: args }, store.state);
|
|
19
|
+
});
|
|
20
|
+
store.on("registerModule", (_, namespace) => {
|
|
21
|
+
dt.send({ type: `[Module] Register: ${namespace}` }, store.state);
|
|
22
|
+
});
|
|
23
|
+
store.on("unregisterModule", (_, namespace) => {
|
|
24
|
+
dt.send({ type: `[Module] Unregister: ${namespace}` }, store.state);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function connectPulseStore(store, options = {}) {
|
|
28
|
+
const devTools = getDevTools();
|
|
29
|
+
if (!devTools) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const name = options.name || "PulseStore";
|
|
33
|
+
const dt = devTools.connect({ name, ...options });
|
|
34
|
+
dt.init(store.state);
|
|
35
|
+
if (store.on) {
|
|
36
|
+
store.on("pulse", (pulse, args) => {
|
|
37
|
+
dt.send({ type: pulse, payload: args }, store.state);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function connectPulse(pulse, options = {}) {
|
|
42
|
+
const devTools = getDevTools();
|
|
43
|
+
if (!devTools) {
|
|
44
|
+
return pulse;
|
|
45
|
+
}
|
|
46
|
+
const name = options.name || "Pulse";
|
|
47
|
+
const dt = devTools.connect({ name, ...options });
|
|
48
|
+
const [read, write, run] = pulse;
|
|
49
|
+
dt.init(read());
|
|
50
|
+
const newWrite = (newValue) => {
|
|
51
|
+
write(newValue);
|
|
52
|
+
dt.send({ type: "update", payload: newValue }, read());
|
|
53
|
+
};
|
|
54
|
+
return [read, newWrite, run];
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
connectFluxStore,
|
|
58
|
+
connectPulse,
|
|
59
|
+
connectPulseStore
|
|
60
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../lib/redux-devtools/index.ts"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-console */\nimport { FluxStore } from \"valyrian.js/flux-store\";\n\ndeclare global {\n interface Window {\n __REDUX_DEVTOOLS_EXTENSION__: any;\n }\n}\n\ninterface DevToolsOptions {\n name?: string;\n [key: string]: any;\n}\n\nfunction getDevTools() {\n const isBrowser = typeof window !== \"undefined\";\n if (isBrowser && window.__REDUX_DEVTOOLS_EXTENSION__) {\n return window.__REDUX_DEVTOOLS_EXTENSION__;\n }\n return null;\n}\n\nexport function connectFluxStore(store: FluxStore, options: DevToolsOptions = {}) {\n const devTools = getDevTools();\n if (!devTools) {\n return;\n }\n\n const name = options.name || \"FluxStore\";\n const dt = devTools.connect({ name, ...options });\n dt.init(store.state);\n\n store.on(\"commit\", (_: any, mutation: string, ...args: any[]) => {\n dt.send({ type: mutation, payload: args }, store.state);\n });\n\n store.on(\"registerModule\", (_: any, namespace: string) => {\n dt.send({ type: `[Module] Register: ${namespace}` }, store.state);\n });\n\n store.on(\"unregisterModule\", (_: any, namespace: string) => {\n dt.send({ type: `[Module] Unregister: ${namespace}` }, store.state);\n });\n}\n\nexport function connectPulseStore(store: any, options: DevToolsOptions = {}) {\n const devTools = getDevTools();\n if (!devTools) {\n return;\n }\n\n const name = options.name || \"PulseStore\";\n const dt = devTools.connect({ name, ...options });\n dt.init(store.state);\n\n if (store.on) {\n store.on(\"pulse\", (pulse: string, args: any[]) => {\n dt.send({ type: pulse, payload: args }, store.state);\n });\n }\n}\n\nexport function connectPulse(pulse: any, options: DevToolsOptions = {}) {\n // Pulse is [read, write, runSubscribers]\n // We can't easily hook into the write function without wrapping it.\n // But the user asked for \"simple\" and \"using existing apis\".\n // If we want to debug individual pulses, we might need to wrap them.\n\n const devTools = getDevTools();\n if (!devTools) {\n return pulse;\n }\n\n const name = options.name || \"Pulse\";\n const dt = devTools.connect({ name, ...options });\n const [read, write, run] = pulse;\n \n dt.init(read());\n\n const newWrite = (newValue: any) => {\n write(newValue);\n dt.send({ type: \"update\", payload: newValue }, read());\n };\n\n return [read, newWrite, run];\n}\n"],
|
|
5
|
+
"mappings": ";AAcA,SAAS,cAAc;AACrB,QAAM,YAAY,OAAO,WAAW;AACpC,MAAI,aAAa,OAAO,8BAA8B;AACpD,WAAO,OAAO;AAAA,EAChB;AACA,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAkB,UAA2B,CAAC,GAAG;AAChF,QAAM,WAAW,YAAY;AAC7B,MAAI,CAAC,UAAU;AACb;AAAA,EACF;AAEA,QAAM,OAAO,QAAQ,QAAQ;AAC7B,QAAM,KAAK,SAAS,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;AAChD,KAAG,KAAK,MAAM,KAAK;AAEnB,QAAM,GAAG,UAAU,CAAC,GAAQ,aAAqB,SAAgB;AAC/D,OAAG,KAAK,EAAE,MAAM,UAAU,SAAS,KAAK,GAAG,MAAM,KAAK;AAAA,EACxD,CAAC;AAED,QAAM,GAAG,kBAAkB,CAAC,GAAQ,cAAsB;AACxD,OAAG,KAAK,EAAE,MAAM,sBAAsB,SAAS,GAAG,GAAG,MAAM,KAAK;AAAA,EAClE,CAAC;AAED,QAAM,GAAG,oBAAoB,CAAC,GAAQ,cAAsB;AAC1D,OAAG,KAAK,EAAE,MAAM,wBAAwB,SAAS,GAAG,GAAG,MAAM,KAAK;AAAA,EACpE,CAAC;AACH;AAEO,SAAS,kBAAkB,OAAY,UAA2B,CAAC,GAAG;AAC3E,QAAM,WAAW,YAAY;AAC7B,MAAI,CAAC,UAAU;AACb;AAAA,EACF;AAEA,QAAM,OAAO,QAAQ,QAAQ;AAC7B,QAAM,KAAK,SAAS,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;AAChD,KAAG,KAAK,MAAM,KAAK;AAEnB,MAAI,MAAM,IAAI;AACZ,UAAM,GAAG,SAAS,CAAC,OAAe,SAAgB;AAChD,SAAG,KAAK,EAAE,MAAM,OAAO,SAAS,KAAK,GAAG,MAAM,KAAK;AAAA,IACrD,CAAC;AAAA,EACH;AACF;AAEO,SAAS,aAAa,OAAY,UAA2B,CAAC,GAAG;AAMtE,QAAM,WAAW,YAAY;AAC7B,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,QAAQ,QAAQ;AAC7B,QAAM,KAAK,SAAS,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;AAChD,QAAM,CAAC,MAAM,OAAO,GAAG,IAAI;AAE3B,KAAG,KAAK,KAAK,CAAC;AAEd,QAAM,WAAW,CAAC,aAAkB;AAClC,UAAM,QAAQ;AACd,OAAG,KAAK,EAAE,MAAM,UAAU,SAAS,SAAS,GAAG,KAAK,CAAC;AAAA,EACvD;AAEA,SAAO,CAAC,MAAM,UAAU,GAAG;AAC7B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/request/index.js
CHANGED
|
@@ -38,10 +38,16 @@ function serialize(obj, prefix = "") {
|
|
|
38
38
|
return params;
|
|
39
39
|
}
|
|
40
40
|
function serializeFormData(data) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return
|
|
44
|
-
|
|
41
|
+
const fd = new FormData();
|
|
42
|
+
Object.entries(data).forEach(([key, value]) => {
|
|
43
|
+
if (value === null || value === void 0) return;
|
|
44
|
+
if (Array.isArray(value)) {
|
|
45
|
+
value.forEach((v) => fd.append(key, v));
|
|
46
|
+
} else {
|
|
47
|
+
fd.append(key, value);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
return fd;
|
|
45
51
|
}
|
|
46
52
|
function parseUrl(url, options) {
|
|
47
53
|
const urlWithoutSlash = url.replace(/\/+$/, "").trim();
|
|
@@ -60,6 +66,7 @@ function parseUrl(url, options) {
|
|
|
60
66
|
return new URL(u, options.urls.base);
|
|
61
67
|
}
|
|
62
68
|
var defaultOptions = { allowedMethods: ["get", "post", "put", "patch", "delete", "head", "options"] };
|
|
69
|
+
var isNativeBody = (data) => data instanceof FormData || data instanceof URLSearchParams || data instanceof Blob || data instanceof ArrayBuffer || typeof DataView !== "undefined" && data instanceof DataView || typeof ReadableStream !== "undefined" && data instanceof ReadableStream;
|
|
63
70
|
function Requester(baseUrl = "", options = defaultOptions) {
|
|
64
71
|
const url = baseUrl.replace(/\/$/gi, "").trim();
|
|
65
72
|
if (!options.urls) {
|
|
@@ -104,11 +111,17 @@ function Requester(baseUrl = "", options = defaultOptions) {
|
|
|
104
111
|
throw new Error(`Failed to parse URL: ${url2}`);
|
|
105
112
|
}
|
|
106
113
|
if (data) {
|
|
107
|
-
const isJson = /json/gi.test(contentType);
|
|
108
114
|
if (innerOptions.method === "GET" && typeof data === "object") {
|
|
109
115
|
finalUrl.search = serialize(data).toString();
|
|
110
|
-
} else if (
|
|
111
|
-
innerOptions.body =
|
|
116
|
+
} else if (isNativeBody(data) || typeof data === "string") {
|
|
117
|
+
innerOptions.body = data;
|
|
118
|
+
} else {
|
|
119
|
+
const isJson = /json/gi.test(contentType);
|
|
120
|
+
if (isJson) {
|
|
121
|
+
innerOptions.body = JSON.stringify(data);
|
|
122
|
+
} else {
|
|
123
|
+
innerOptions.body = serializeFormData(data);
|
|
124
|
+
}
|
|
112
125
|
}
|
|
113
126
|
}
|
|
114
127
|
const response = await fetch(finalUrl.toString(), innerOptions);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../lib/request/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { isNodeJs } from \"valyrian.js\";\nimport { get, set } from \"valyrian.js/utils\";\n\ninterface UrlOptions {\n base?: string; // Used to prefix the url for scoped requests.\n node?: string | null; // Used to redirect local requests to node server for server side rendering.\n api?: string | null; // Used to redirect api requests to node server for server side rendering.\n}\n\ninterface RequestOptions {\n allowedMethods?: string[];\n urls?: UrlOptions;\n [key: string | number | symbol]: any;\n}\n\ninterface RequestOptionsWithUrls extends RequestOptions {\n urls: UrlOptions;\n allowedMethods: string[];\n}\n\ninterface SendOptions extends RequestOptionsWithUrls, RequestInit {\n allowedMethods: string[];\n method: string;\n headers: Record<string, string>;\n resolveWithFullResponse?: boolean;\n}\n\nexport interface RequestInterface {\n // eslint-disable-next-line no-unused-vars\n (method: string, url: string, data?: Record<string, any> | null, options?: Partial<SendOptions>): any | Response;\n // eslint-disable-next-line no-unused-vars\n new: (baseUrl: string, options?: RequestOptions) => RequestInterface;\n // eslint-disable-next-line no-unused-vars\n setOptions: (key: string, value: any) => void;\n // eslint-disable-next-line no-unused-vars\n getOptions: (key?: string) => RequestOptions | void;\n // eslint-disable-next-line no-unused-vars\n get: (url: string, data?: Record<string, any> | null, options?: Record<string, any>) => any | Response;\n // eslint-disable-next-line no-unused-vars\n post: (url: string, data?: Record<string, any> | null, options?: Record<string, any>) => any | Response;\n // eslint-disable-next-line no-unused-vars\n put: (url: string, data?: Record<string, any> | null, options?: Record<string, any>) => any | Response;\n // eslint-disable-next-line no-unused-vars\n patch: (url: string, data?: Record<string, any> | null, options?: Record<string, any>) => any | Response;\n // eslint-disable-next-line no-unused-vars\n delete: (url: string, data?: Record<string, any> | null, options?: Record<string, any>) => any | Response;\n // eslint-disable-next-line no-unused-vars\n head: (url: string, data?: Record<string, any> | null, options?: Record<string, any>) => any | Response;\n // eslint-disable-next-line no-unused-vars\n options: (url: string, data?: Record<string, any> | null, options?: Record<string, any>) => any | Response;\n [key: string | number | symbol]: any;\n}\n\n// This method is used to serialize an object into a query string.\nfunction serialize(obj: Record<string, any>, prefix: string = \"\"): URLSearchParams {\n const params = new URLSearchParams();\n\n Object.keys(obj).forEach((prop: string) => {\n const key = prefix ? `${prefix}[${prop}]` : prop;\n if (typeof obj[prop] === \"object\") {\n params.append(key, serialize(obj[prop], key).toString());\n } else {\n params.append(key, obj[prop]);\n }\n });\n\n return params;\n}\n\nfunction serializeFormData(data: Record<string, any>): FormData {\n
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAyB;AACzB,mBAAyB;AAqDzB,SAAS,UAAU,KAA0B,SAAiB,IAAqB;AACjF,QAAM,SAAS,IAAI,gBAAgB;AAEnC,SAAO,KAAK,GAAG,EAAE,QAAQ,CAAC,SAAiB;AACzC,UAAM,MAAM,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM;AAC5C,QAAI,OAAO,IAAI,IAAI,MAAM,UAAU;AACjC,aAAO,OAAO,KAAK,UAAU,IAAI,IAAI,GAAG,GAAG,EAAE,SAAS,CAAC;AAAA,IACzD,OAAO;AACL,aAAO,OAAO,KAAK,IAAI,IAAI,CAAC;AAAA,IAC9B;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,SAAS,kBAAkB,MAAqC;AAC9D,SAAO,
|
|
4
|
+
"sourcesContent": ["import { isNodeJs } from \"valyrian.js\";\nimport { get, set } from \"valyrian.js/utils\";\n\ninterface UrlOptions {\n base?: string; // Used to prefix the url for scoped requests.\n node?: string | null; // Used to redirect local requests to node server for server side rendering.\n api?: string | null; // Used to redirect api requests to node server for server side rendering.\n}\n\ninterface RequestOptions {\n allowedMethods?: string[];\n urls?: UrlOptions;\n [key: string | number | symbol]: any;\n}\n\ninterface RequestOptionsWithUrls extends RequestOptions {\n urls: UrlOptions;\n allowedMethods: string[];\n}\n\ninterface SendOptions extends RequestOptionsWithUrls, RequestInit {\n allowedMethods: string[];\n method: string;\n headers: Record<string, string>;\n resolveWithFullResponse?: boolean;\n}\n\nexport interface RequestInterface {\n // eslint-disable-next-line no-unused-vars\n (method: string, url: string, data?: Record<string, any> | null, options?: Partial<SendOptions>): any | Response;\n // eslint-disable-next-line no-unused-vars\n new: (baseUrl: string, options?: RequestOptions) => RequestInterface;\n // eslint-disable-next-line no-unused-vars\n setOptions: (key: string, value: any) => void;\n // eslint-disable-next-line no-unused-vars\n getOptions: (key?: string) => RequestOptions | void;\n // eslint-disable-next-line no-unused-vars\n get: (url: string, data?: Record<string, any> | null, options?: Record<string, any>) => any | Response;\n // eslint-disable-next-line no-unused-vars\n post: (url: string, data?: Record<string, any> | null, options?: Record<string, any>) => any | Response;\n // eslint-disable-next-line no-unused-vars\n put: (url: string, data?: Record<string, any> | null, options?: Record<string, any>) => any | Response;\n // eslint-disable-next-line no-unused-vars\n patch: (url: string, data?: Record<string, any> | null, options?: Record<string, any>) => any | Response;\n // eslint-disable-next-line no-unused-vars\n delete: (url: string, data?: Record<string, any> | null, options?: Record<string, any>) => any | Response;\n // eslint-disable-next-line no-unused-vars\n head: (url: string, data?: Record<string, any> | null, options?: Record<string, any>) => any | Response;\n // eslint-disable-next-line no-unused-vars\n options: (url: string, data?: Record<string, any> | null, options?: Record<string, any>) => any | Response;\n [key: string | number | symbol]: any;\n}\n\n// This method is used to serialize an object into a query string.\nfunction serialize(obj: Record<string, any>, prefix: string = \"\"): URLSearchParams {\n const params = new URLSearchParams();\n\n Object.keys(obj).forEach((prop: string) => {\n const key = prefix ? `${prefix}[${prop}]` : prop;\n if (typeof obj[prop] === \"object\") {\n params.append(key, serialize(obj[prop], key).toString());\n } else {\n params.append(key, obj[prop]);\n }\n });\n\n return params;\n}\n\nfunction serializeFormData(data: Record<string, any>): FormData {\n const fd = new FormData();\n Object.entries(data).forEach(([key, value]) => {\n if (value === null || value === undefined) return; // Ignorar nulos\n\n if (Array.isArray(value)) {\n value.forEach((v) => fd.append(key, v));\n } else {\n fd.append(key, value);\n }\n });\n return fd;\n}\n\nfunction parseUrl(url: string, options: RequestOptionsWithUrls) {\n const urlWithoutSlash = url.replace(/\\/+$/, \"\").trim();\n const u = /^https?/gi.test(urlWithoutSlash) ? urlWithoutSlash : `${options.urls.base}${urlWithoutSlash}`;\n\n if (isNodeJs && typeof options.urls.node === \"string\") {\n if (typeof options.urls.api === \"string\") {\n return new URL(u.replace(options.urls.api, options.urls.node));\n }\n\n if (!/^https?/gi.test(u)) {\n return new URL(u, options.urls.node);\n }\n }\n\n if (/^https?/gi.test(u)) {\n return new URL(u);\n }\n\n return new URL(u, options.urls.base);\n}\n\nconst defaultOptions: RequestOptions = { allowedMethods: [\"get\", \"post\", \"put\", \"patch\", \"delete\", \"head\", \"options\"] };\n\nconst isNativeBody = (data: any) =>\n data instanceof FormData ||\n data instanceof URLSearchParams ||\n data instanceof Blob ||\n data instanceof ArrayBuffer ||\n (typeof DataView !== \"undefined\" && data instanceof DataView) ||\n (typeof ReadableStream !== \"undefined\" && data instanceof ReadableStream);\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nfunction Requester(baseUrl = \"\", options: RequestOptions = defaultOptions) {\n const url = baseUrl.replace(/\\/$/gi, \"\").trim();\n if (!options.urls) {\n options.urls = {\n base: \"\",\n node: null,\n api: null\n };\n }\n\n if (!options.allowedMethods) {\n options.allowedMethods = defaultOptions.allowedMethods;\n }\n\n const opts: RequestOptionsWithUrls = {\n ...(options as RequestOptionsWithUrls),\n urls: {\n node: options.urls.node || null,\n api: options.urls.api || null,\n base: options.urls.base ? options.urls.base + url : url\n }\n };\n\n // eslint-disable-next-line complexity\n const request = async function request(\n method: string,\n url: string,\n data?: Record<string, any> | null,\n options: Record<string, any> = {}\n ) {\n const innerOptions: SendOptions = {\n method: method.toUpperCase(),\n headers: {},\n resolveWithFullResponse: false,\n ...opts,\n ...options\n } as SendOptions;\n\n innerOptions.headers = { ...innerOptions.headers, ...opts.headers, ...options.headers };\n\n if (!innerOptions.headers.Accept) {\n innerOptions.headers.Accept = \"application/json\";\n }\n\n const acceptType = innerOptions.headers.Accept;\n const contentType = innerOptions.headers[\"Content-Type\"] || innerOptions.headers[\"content-type\"] || \"\";\n\n if (!innerOptions.allowedMethods.includes(method)) {\n throw new Error(`Method ${method} not allowed. Allowed methods: ${innerOptions.allowedMethods.join(\", \")}`);\n }\n\n let finalUrl: URL;\n try {\n finalUrl = parseUrl(url, opts);\n } catch (error) {\n throw new Error(`Failed to parse URL: ${url}`);\n }\n\n if (data) {\n if (innerOptions.method === \"GET\" && typeof data === \"object\") {\n finalUrl.search = serialize(data).toString();\n } else if (isNativeBody(data) || typeof data === \"string\") {\n innerOptions.body = data as BodyInit;\n } else {\n const isJson = /json/gi.test(contentType);\n if (isJson) {\n innerOptions.body = JSON.stringify(data);\n } else {\n innerOptions.body = serializeFormData(data);\n }\n }\n }\n\n const response = await fetch(finalUrl.toString(), innerOptions);\n let body = null;\n if (!response.ok) {\n const err = new Error(`${response.status}: ${response.statusText}`) as Error & { response?: any; body?: any };\n err.response = response;\n if (/text/gi.test(acceptType)) {\n err.body = await response.text();\n }\n\n if (/json/gi.test(acceptType)) {\n try {\n err.body = await response.json();\n } catch (error) {\n err.body = null;\n // eslint-disable-next-line no-console\n console.warn(\"Failed to parse JSON response:\", error);\n }\n }\n\n throw err;\n }\n\n if (innerOptions.resolveWithFullResponse) {\n return response;\n }\n\n if (/text/gi.test(acceptType)) {\n body = await response.text();\n } else if (/json/gi.test(acceptType)) {\n try {\n body = await response.json();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn(\"Failed to parse JSON response:\", error);\n body = null;\n }\n } else if (/blob/gi.test(acceptType)) {\n body = await response.blob();\n } else if (/arraybuffer/gi.test(acceptType)) {\n body = await response.arrayBuffer();\n } else {\n body = response;\n }\n\n return body || response;\n } as unknown as RequestInterface;\n\n request.new = (baseUrl: string, options?: RequestOptions) => Requester(baseUrl, { ...opts, ...(options || {}) });\n\n request.setOption = (key: string, value: any) => {\n set(opts, key, value);\n return opts;\n };\n\n request.getOptions = (key?: string) => {\n if (key) {\n return get(opts, key);\n }\n\n return opts;\n };\n\n Object.assign(\n request,\n opts.allowedMethods.reduce((acc: Record<string, any>, method) => {\n acc[method] = (url: string, data?: Record<string, any> | null, options?: Record<string, any>) =>\n request(method, url, data, options);\n return acc;\n }, {})\n );\n\n return request;\n}\n\nexport const request = Requester();\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["request", "url", "options", "baseUrl"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{"use strict";var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,o={};((t,r)=>{for(var s in r)e(t,s,{get:r[s],enumerable:!0})})(o,{request:()=>
|
|
1
|
+
(()=>{"use strict";var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,o={};((t,r)=>{for(var s in r)e(t,s,{get:r[s],enumerable:!0})})(o,{request:()=>u});var a,n=(a=o,((o,a,n,l)=>{if(a&&"object"==typeof a||"function"==typeof a)for(let i of r(a))s.call(o,i)||i===n||e(o,i,{get:()=>a[i],enumerable:!(l=t(a,i))||l.enumerable});return o})(e({},"__esModule",{value:!0}),a)),l=require("valyrian.js"),i=require("valyrian.js/utils");function c(e,t=""){const r=new URLSearchParams;return Object.keys(e).forEach(s=>{const o=t?`${t}[${s}]`:s;"object"==typeof e[s]?r.append(o,c(e[s],o).toString()):r.append(o,e[s])}),r}var d={allowedMethods:["get","post","put","patch","delete","head","options"]};var u=function e(t="",r=d){const s=t.replace(/\/$/gi,"").trim();r.urls||(r.urls={base:"",node:null,api:null}),r.allowedMethods||(r.allowedMethods=d.allowedMethods);const o={...r,urls:{node:r.urls.node||null,api:r.urls.api||null,base:r.urls.base?r.urls.base+s:s}},a=async function(e,t,r,s={}){const a={method:e.toUpperCase(),headers:{},resolveWithFullResponse:!1,...o,...s};a.headers={...a.headers,...o.headers,...s.headers},a.headers.Accept||(a.headers.Accept="application/json");const n=a.headers.Accept,i=a.headers["Content-Type"]||a.headers["content-type"]||"";if(!a.allowedMethods.includes(e))throw new Error(`Method ${e} not allowed. Allowed methods: ${a.allowedMethods.join(", ")}`);let d;try{d=function(e,t){const r=e.replace(/\/+$/,"").trim(),s=/^https?/gi.test(r)?r:`${t.urls.base}${r}`;if(l.isNodeJs&&"string"==typeof t.urls.node){if("string"==typeof t.urls.api)return new URL(s.replace(t.urls.api,t.urls.node));if(!/^https?/gi.test(s))return new URL(s,t.urls.node)}return/^https?/gi.test(s)?new URL(s):new URL(s,t.urls.base)}(t,o)}catch(e){throw new Error(`Failed to parse URL: ${t}`)}if(r)if("GET"===a.method&&"object"==typeof r)d.search=c(r).toString();else if((e=>e instanceof FormData||e instanceof URLSearchParams||e instanceof Blob||e instanceof ArrayBuffer||"undefined"!=typeof DataView&&e instanceof DataView||"undefined"!=typeof ReadableStream&&e instanceof ReadableStream)(r)||"string"==typeof r)a.body=r;else{const e=/json/gi.test(i);a.body=e?JSON.stringify(r):function(e){const t=new FormData;return Object.entries(e).forEach(([e,r])=>{null!=r&&(Array.isArray(r)?r.forEach(r=>t.append(e,r)):t.append(e,r))}),t}(r)}const u=await fetch(d.toString(),a);let p=null;if(!u.ok){const e=new Error(`${u.status}: ${u.statusText}`);if(e.response=u,/text/gi.test(n)&&(e.body=await u.text()),/json/gi.test(n))try{e.body=await u.json()}catch(t){e.body=null,console.warn("Failed to parse JSON response:",t)}throw e}if(a.resolveWithFullResponse)return u;if(/text/gi.test(n))p=await u.text();else if(/json/gi.test(n))try{p=await u.json()}catch(e){console.warn("Failed to parse JSON response:",e),p=null}else p=/blob/gi.test(n)?await u.blob():/arraybuffer/gi.test(n)?await u.arrayBuffer():u;return p||u};return a.new=(t,r)=>e(t,{...o,...r||{}}),a.setOption=(e,t)=>((0,i.set)(o,e,t),o),a.getOptions=e=>e?(0,i.get)(o,e):o,Object.assign(a,o.allowedMethods.reduce((e,t)=>(e[t]=(e,r,s)=>a(t,e,r,s),e),{})),a}();"undefined"!=typeof module?module.exports=n:self.ValyrianRequest=n})();//# sourceMappingURL=index.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmRleF9leHBvcnRzIiwiX19leHBvcnQiLCJyZXF1ZXN0IiwiX19FWFBPUlRTX18iLCJpbXBvcnRfdmFseXJpYW4iLCJyZXF1aXJlIiwiaW1wb3J0X3V0aWxzIiwic2VyaWFsaXplIiwib2JqIiwicHJlZml4IiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJwcm9wIiwia2V5IiwiYXBwZW5kIiwidG9TdHJpbmciLCJkZWZhdWx0T3B0aW9ucyIsImFsbG93ZWRNZXRob2RzIiwiUmVxdWVzdGVyIiwiYmFzZVVybCIsIm9wdGlvbnMiLCJ1cmwiLCJyZXBsYWNlIiwidHJpbSIsInVybHMiLCJiYXNlIiwibm9kZSIsImFwaSIsIm9wdHMiLCJhc3luYyIsIm1ldGhvZCIsImRhdGEiLCJpbm5lck9wdGlvbnMiLCJ0b1VwcGVyQ2FzZSIsImhlYWRlcnMiLCJyZXNvbHZlV2l0aEZ1bGxSZXNwb25zZSIsIkFjY2VwdCIsImFjY2VwdFR5cGUiLCJjb250ZW50VHlwZSIsImluY2x1ZGVzIiwiRXJyb3IiLCJqb2luIiwiZmluYWxVcmwiLCJ1cmxXaXRob3V0U2xhc2giLCJ1IiwidGVzdCIsImlzTm9kZUpzIiwiVVJMIiwicGFyc2VVcmwiLCJlcnJvciIsImlzSnNvbiIsInNlYXJjaCIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5IiwiZW50cmllcyIsInJlZHVjZSIsImZkIiwidmFsdWUiLCJGb3JtRGF0YSIsInNlcmlhbGl6ZUZvcm1EYXRhIiwicmVzcG9uc2UiLCJmZXRjaCIsIm9rIiwiZXJyIiwic3RhdHVzIiwic3RhdHVzVGV4dCIsInRleHQiLCJqc29uIiwiY29uc29sZSIsIndhcm4iLCJibG9iIiwiYXJyYXlCdWZmZXIiLCJuZXciLCJzZXRPcHRpb24iLCJzZXQiLCJnZXRPcHRpb25zIiwiZ2V0IiwiYXNzaWduIiwiYWNjIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3JlcXVlc3QvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOb2RlSnMgfSBmcm9tIFwidmFseXJpYW4uanNcIjtcbmltcG9ydCB7IGdldCwgc2V0IH0gZnJvbSBcInZhbHlyaWFuLmpzL3V0aWxzXCI7XG5cbmludGVyZmFjZSBVcmxPcHRpb25zIHtcbiAgYmFzZT86IHN0cmluZzsgLy8gVXNlZCB0byBwcmVmaXggdGhlIHVybCBmb3Igc2NvcGVkIHJlcXVlc3RzLlxuICBub2RlPzogc3RyaW5nIHwgbnVsbDsgLy8gVXNlZCB0byByZWRpcmVjdCBsb2NhbCByZXF1ZXN0cyB0byBub2RlIHNlcnZlciBmb3Igc2VydmVyIHNpZGUgcmVuZGVyaW5nLlxuICBhcGk/OiBzdHJpbmcgfCBudWxsOyAvLyBVc2VkIHRvIHJlZGlyZWN0IGFwaSByZXF1ZXN0cyB0byBub2RlIHNlcnZlciBmb3Igc2VydmVyIHNpZGUgcmVuZGVyaW5nLlxufVxuXG5pbnRlcmZhY2UgUmVxdWVzdE9wdGlvbnMge1xuICBhbGxvd2VkTWV0aG9kcz86IHN0cmluZ1tdO1xuICB1cmxzPzogVXJsT3B0aW9ucztcbiAgW2tleTogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sXTogYW55O1xufVxuXG5pbnRlcmZhY2UgUmVxdWVzdE9wdGlvbnNXaXRoVXJscyBleHRlbmRzIFJlcXVlc3RPcHRpb25zIHtcbiAgdXJsczogVXJsT3B0aW9ucztcbiAgYWxsb3dlZE1ldGhvZHM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgU2VuZE9wdGlvbnMgZXh0ZW5kcyBSZXF1ZXN0T3B0aW9uc1dpdGhVcmxzLCBSZXF1ZXN0SW5pdCB7XG4gIGFsbG93ZWRNZXRob2RzOiBzdHJpbmdbXTtcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHJlc29sdmVXaXRoRnVsbFJlc3BvbnNlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIChtZXRob2Q6IHN0cmluZywgdXJsOiBzdHJpbmcsIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCwgb3B0aW9ucz86IFBhcnRpYWw8U2VuZE9wdGlvbnM+KTogYW55IHwgUmVzcG9uc2U7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBuZXc6IChiYXNlVXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucykgPT4gUmVxdWVzdEludGVyZmFjZTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIHNldE9wdGlvbnM6IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4gdm9pZDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGdldE9wdGlvbnM6IChrZXk/OiBzdHJpbmcpID0+IFJlcXVlc3RPcHRpb25zIHwgdm9pZDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGdldDogKHVybDogc3RyaW5nLCBkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwsIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBhbnkgfCBSZXNwb25zZTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIHBvc3Q6ICh1cmw6IHN0cmluZywgZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsLCBvcHRpb25zPzogUmVjb3JkPHN0cmluZywgYW55PikgPT4gYW55IHwgUmVzcG9uc2U7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBwdXQ6ICh1cmw6IHN0cmluZywgZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsLCBvcHRpb25zPzogUmVjb3JkPHN0cmluZywgYW55PikgPT4gYW55IHwgUmVzcG9uc2U7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBwYXRjaDogKHVybDogc3RyaW5nLCBkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwsIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBhbnkgfCBSZXNwb25zZTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGRlbGV0ZTogKHVybDogc3RyaW5nLCBkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwsIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBhbnkgfCBSZXNwb25zZTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGhlYWQ6ICh1cmw6IHN0cmluZywgZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsLCBvcHRpb25zPzogUmVjb3JkPHN0cmluZywgYW55PikgPT4gYW55IHwgUmVzcG9uc2U7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBvcHRpb25zOiAodXJsOiBzdHJpbmcsIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCwgb3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IGFueSB8IFJlc3BvbnNlO1xuICBba2V5OiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2xdOiBhbnk7XG59XG5cbi8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gc2VyaWFsaXplIGFuIG9iamVjdCBpbnRvIGEgcXVlcnkgc3RyaW5nLlxuZnVuY3Rpb24gc2VyaWFsaXplKG9iajogUmVjb3JkPHN0cmluZywgYW55PiwgcHJlZml4OiBzdHJpbmcgPSBcIlwiKTogVVJMU2VhcmNoUGFyYW1zIHtcbiAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuXG4gIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgocHJvcDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gcHJlZml4ID8gYCR7cHJlZml4fVske3Byb3B9XWAgOiBwcm9wO1xuICAgIGlmICh0eXBlb2Ygb2JqW3Byb3BdID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBwYXJhbXMuYXBwZW5kKGtleSwgc2VyaWFsaXplKG9ialtwcm9wXSwga2V5KS50b1N0cmluZygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyYW1zLmFwcGVuZChrZXksIG9ialtwcm9wXSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcGFyYW1zO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVGb3JtRGF0YShkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogRm9ybURhdGEge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZGF0YSkucmVkdWNlKChmZCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgZmQuYXBwZW5kKGtleSwgdmFsdWUpO1xuICAgIHJldHVybiBmZDtcbiAgfSwgbmV3IEZvcm1EYXRhKCkpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVVybCh1cmw6IHN0cmluZywgb3B0aW9uczogUmVxdWVzdE9wdGlvbnNXaXRoVXJscykge1xuICBjb25zdCB1cmxXaXRob3V0U2xhc2ggPSB1cmwucmVwbGFjZSgvXFwvKyQvLCBcIlwiKS50cmltKCk7XG4gIGNvbnN0IHUgPSAvXmh0dHBzPy9naS50ZXN0KHVybFdpdGhvdXRTbGFzaCkgPyB1cmxXaXRob3V0U2xhc2ggOiBgJHtvcHRpb25zLnVybHMuYmFzZX0ke3VybFdpdGhvdXRTbGFzaH1gO1xuXG4gIGlmIChpc05vZGVKcyAmJiB0eXBlb2Ygb3B0aW9ucy51cmxzLm5vZGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMudXJscy5hcGkgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHUucmVwbGFjZShvcHRpb25zLnVybHMuYXBpLCBvcHRpb25zLnVybHMubm9kZSkpO1xuICAgIH1cblxuICAgIGlmICghL15odHRwcz8vZ2kudGVzdCh1KSkge1xuICAgICAgcmV0dXJuIG5ldyBVUkwodSwgb3B0aW9ucy51cmxzLm5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmICgvXmh0dHBzPy9naS50ZXN0KHUpKSB7XG4gICAgcmV0dXJuIG5ldyBVUkwodSk7XG4gIH1cblxuICByZXR1cm4gbmV3IFVSTCh1LCBvcHRpb25zLnVybHMuYmFzZSk7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyA9IHsgYWxsb3dlZE1ldGhvZHM6IFtcImdldFwiLCBcInBvc3RcIiwgXCJwdXRcIiwgXCJwYXRjaFwiLCBcImRlbGV0ZVwiLCBcImhlYWRcIiwgXCJvcHRpb25zXCJdIH07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL2NvZ25pdGl2ZS1jb21wbGV4aXR5XG5mdW5jdGlvbiBSZXF1ZXN0ZXIoYmFzZVVybCA9IFwiXCIsIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zID0gZGVmYXVsdE9wdGlvbnMpIHtcbiAgY29uc3QgdXJsID0gYmFzZVVybC5yZXBsYWNlKC9cXC8kL2dpLCBcIlwiKS50cmltKCk7XG4gIGlmICghb3B0aW9ucy51cmxzKSB7XG4gICAgb3B0aW9ucy51cmxzID0ge1xuICAgICAgYmFzZTogXCJcIixcbiAgICAgIG5vZGU6IG51bGwsXG4gICAgICBhcGk6IG51bGxcbiAgICB9O1xuICB9XG5cbiAgaWYgKCFvcHRpb25zLmFsbG93ZWRNZXRob2RzKSB7XG4gICAgb3B0aW9ucy5hbGxvd2VkTWV0aG9kcyA9IGRlZmF1bHRPcHRpb25zLmFsbG93ZWRNZXRob2RzO1xuICB9XG5cbiAgY29uc3Qgb3B0czogUmVxdWVzdE9wdGlvbnNXaXRoVXJscyA9IHtcbiAgICAuLi4ob3B0aW9ucyBhcyBSZXF1ZXN0T3B0aW9uc1dpdGhVcmxzKSxcbiAgICB1cmxzOiB7XG4gICAgICBub2RlOiBvcHRpb25zLnVybHMubm9kZSB8fCBudWxsLFxuICAgICAgYXBpOiBvcHRpb25zLnVybHMuYXBpIHx8IG51bGwsXG4gICAgICBiYXNlOiBvcHRpb25zLnVybHMuYmFzZSA/IG9wdGlvbnMudXJscy5iYXNlICsgdXJsIDogdXJsXG4gICAgfVxuICB9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG4gIGNvbnN0IHJlcXVlc3QgPSBhc3luYyBmdW5jdGlvbiByZXF1ZXN0KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHVybDogc3RyaW5nLFxuICAgIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCxcbiAgICBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge31cbiAgKSB7XG4gICAgY29uc3QgaW5uZXJPcHRpb25zOiBTZW5kT3B0aW9ucyA9IHtcbiAgICAgIG1ldGhvZDogbWV0aG9kLnRvVXBwZXJDYXNlKCksXG4gICAgICBoZWFkZXJzOiB7fSxcbiAgICAgIHJlc29sdmVXaXRoRnVsbFJlc3BvbnNlOiBmYWxzZSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfSBhcyBTZW5kT3B0aW9ucztcblxuICAgIGlubmVyT3B0aW9ucy5oZWFkZXJzID0geyAuLi5pbm5lck9wdGlvbnMuaGVhZGVycywgLi4ub3B0cy5oZWFkZXJzLCAuLi5vcHRpb25zLmhlYWRlcnMgfTtcblxuICAgIGlmICghaW5uZXJPcHRpb25zLmhlYWRlcnMuQWNjZXB0KSB7XG4gICAgICBpbm5lck9wdGlvbnMuaGVhZGVycy5BY2NlcHQgPSBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NlcHRUeXBlID0gaW5uZXJPcHRpb25zLmhlYWRlcnMuQWNjZXB0O1xuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gaW5uZXJPcHRpb25zLmhlYWRlcnNbXCJDb250ZW50LVR5cGVcIl0gfHwgaW5uZXJPcHRpb25zLmhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0gfHwgXCJcIjtcblxuICAgIGlmICghaW5uZXJPcHRpb25zLmFsbG93ZWRNZXRob2RzLmluY2x1ZGVzKG1ldGhvZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWV0aG9kICR7bWV0aG9kfSBub3QgYWxsb3dlZC4gQWxsb3dlZCBtZXRob2RzOiAke2lubmVyT3B0aW9ucy5hbGxvd2VkTWV0aG9kcy5qb2luKFwiLCBcIil9YCk7XG4gICAgfVxuXG4gICAgbGV0IGZpbmFsVXJsOiBVUkw7XG4gICAgdHJ5IHtcbiAgICAgIGZpbmFsVXJsID0gcGFyc2VVcmwodXJsLCBvcHRzKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2UgVVJMOiAke3VybH1gKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgY29uc3QgaXNKc29uID0gL2pzb24vZ2kudGVzdChjb250ZW50VHlwZSk7XG5cbiAgICAgIGlmIChpbm5lck9wdGlvbnMubWV0aG9kID09PSBcIkdFVFwiICYmIHR5cGVvZiBkYXRhID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGZpbmFsVXJsLnNlYXJjaCA9IHNlcmlhbGl6ZShkYXRhKS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIGlmIChpbm5lck9wdGlvbnMubWV0aG9kICE9PSBcIkdFVFwiKSB7XG4gICAgICAgIGlubmVyT3B0aW9ucy5ib2R5ID0gaXNKc29uID8gSlNPTi5zdHJpbmdpZnkoZGF0YSkgOiBzZXJpYWxpemVGb3JtRGF0YShkYXRhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGZpbmFsVXJsLnRvU3RyaW5nKCksIGlubmVyT3B0aW9ucyk7XG4gICAgbGV0IGJvZHkgPSBudWxsO1xuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCkgYXMgRXJyb3IgJiB7IHJlc3BvbnNlPzogYW55OyBib2R5PzogYW55IH07XG4gICAgICBlcnIucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgICAgIGlmICgvdGV4dC9naS50ZXN0KGFjY2VwdFR5cGUpKSB7XG4gICAgICAgIGVyci5ib2R5ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoL2pzb24vZ2kudGVzdChhY2NlcHRUeXBlKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGVyci5ib2R5ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGVyci5ib2R5ID0gbnVsbDtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGNvbnNvbGUud2FybihcIkZhaWxlZCB0byBwYXJzZSBKU09OIHJlc3BvbnNlOlwiLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIGlmIChpbm5lck9wdGlvbnMucmVzb2x2ZVdpdGhGdWxsUmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBpZiAoL3RleHQvZ2kudGVzdChhY2NlcHRUeXBlKSkge1xuICAgICAgYm9keSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICB9IGVsc2UgaWYgKC9qc29uL2dpLnRlc3QoYWNjZXB0VHlwZSkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGJvZHkgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLndhcm4oXCJGYWlsZWQgdG8gcGFyc2UgSlNPTiByZXNwb25zZTpcIiwgZXJyb3IpO1xuICAgICAgICBib2R5ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKC9ibG9iL2dpLnRlc3QoYWNjZXB0VHlwZSkpIHtcbiAgICAgIGJvZHkgPSBhd2FpdCByZXNwb25zZS5ibG9iKCk7XG4gICAgfSBlbHNlIGlmICgvYXJyYXlidWZmZXIvZ2kudGVzdChhY2NlcHRUeXBlKSkge1xuICAgICAgYm9keSA9IGF3YWl0IHJlc3BvbnNlLmFycmF5QnVmZmVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvZHkgPSByZXNwb25zZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYm9keSB8fCByZXNwb25zZTtcbiAgfSBhcyB1bmtub3duIGFzIFJlcXVlc3RJbnRlcmZhY2U7XG5cbiAgcmVxdWVzdC5uZXcgPSAoYmFzZVVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpID0+IFJlcXVlc3RlcihiYXNlVXJsLCB7IC4uLm9wdHMsIC4uLihvcHRpb25zIHx8IHt9KSB9KTtcblxuICByZXF1ZXN0LnNldE9wdGlvbiA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICAgIHNldChvcHRzLCBrZXksIHZhbHVlKTtcbiAgICByZXR1cm4gb3B0cztcbiAgfTtcblxuICByZXF1ZXN0LmdldE9wdGlvbnMgPSAoa2V5Pzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGtleSkge1xuICAgICAgcmV0dXJuIGdldChvcHRzLCBrZXkpO1xuICAgIH1cblxuICAgIHJldHVybiBvcHRzO1xuICB9O1xuXG4gIE9iamVjdC5hc3NpZ24oXG4gICAgcmVxdWVzdCxcbiAgICBvcHRzLmFsbG93ZWRNZXRob2RzLnJlZHVjZSgoYWNjOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBtZXRob2QpID0+IHtcbiAgICAgIGFjY1ttZXRob2RdID0gKHVybDogc3RyaW5nLCBkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwsIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PlxuICAgICAgICByZXF1ZXN0KG1ldGhvZCwgdXJsLCBkYXRhLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pXG4gICk7XG5cbiAgcmV0dXJuIHJlcXVlc3Q7XG59XG5cbmV4cG9ydCBjb25zdCByZXF1ZXN0ID0gUmVxdWVzdGVyKCk7XG4iXSwibWFwcGluZ3MiOiJnSkFBQUEsRUFBQSxHLHlEQUFBQyxDQUFBRCxFQUFBLENBQUFFLFFBQUEsSUFBQUEsSUFBQSxJLEVBQUFDLEcsRUFBQUgsRSwwTUFBQUksRUFBeUJDLFFBQUEsZUFDekJDLEVBQXlCRCxRQUFBLHFCQXFEekIsU0FBU0UsRUFBVUMsRUFBMEJDLEVBQWlCLElBQzVELE1BQU1DLEVBQVMsSUFBSUMsZ0JBV25CLE9BVEFDLE9BQU9DLEtBQUtMLEdBQUtNLFFBQVNDLElBQ3hCLE1BQU1DLEVBQU1QLEVBQVMsR0FBR0EsS0FBVU0sS0FBVUEsRUFDbkIsaUJBQWRQLEVBQUlPLEdBQ2JMLEVBQU9PLE9BQU9ELEVBQUtULEVBQVVDLEVBQUlPLEdBQU9DLEdBQUtFLFlBRTdDUixFQUFPTyxPQUFPRCxFQUFLUixFQUFJTyxNQUlwQkwsQ0FDVCxDQThCQSxJQUFNUyxFQUFpQyxDQUFFQyxlQUFnQixDQUFDLE1BQU8sT0FBUSxNQUFPLFFBQVMsU0FBVSxPQUFRLFlBaUpwRyxJQUFNbEIsRUE5SWIsU0FBU21CLEVBQVVDLEVBQVUsR0FBSUMsRUFBMEJKLEdBQ3pELE1BQU1LLEVBQU1GLEVBQVFHLFFBQVEsUUFBUyxJQUFJQyxPQUNwQ0gsRUFBUUksT0FDWEosRUFBUUksS0FBTyxDQUNiQyxLQUFNLEdBQ05DLEtBQU0sS0FDTkMsSUFBSyxPQUlKUCxFQUFRSCxpQkFDWEcsRUFBUUgsZUFBaUJELEVBQWVDLGdCQUcxQyxNQUFNVyxFQUErQixJQUMvQlIsRUFDSkksS0FBTSxDQUNKRSxLQUFNTixFQUFRSSxLQUFLRSxNQUFRLEtBQzNCQyxJQUFLUCxFQUFRSSxLQUFLRyxLQUFPLEtBQ3pCRixLQUFNTCxFQUFRSSxLQUFLQyxLQUFPTCxFQUFRSSxLQUFLQyxLQUFPSixFQUFNQSxJQUtsRHRCLEVBQVU4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
|
|
1
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmRleF9leHBvcnRzIiwiX19leHBvcnQiLCJyZXF1ZXN0IiwiX19FWFBPUlRTX18iLCJpbXBvcnRfdmFseXJpYW4iLCJyZXF1aXJlIiwiaW1wb3J0X3V0aWxzIiwic2VyaWFsaXplIiwib2JqIiwicHJlZml4IiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJwcm9wIiwia2V5IiwiYXBwZW5kIiwidG9TdHJpbmciLCJkZWZhdWx0T3B0aW9ucyIsImFsbG93ZWRNZXRob2RzIiwiUmVxdWVzdGVyIiwiYmFzZVVybCIsIm9wdGlvbnMiLCJ1cmwiLCJyZXBsYWNlIiwidHJpbSIsInVybHMiLCJiYXNlIiwibm9kZSIsImFwaSIsIm9wdHMiLCJhc3luYyIsIm1ldGhvZCIsImRhdGEiLCJpbm5lck9wdGlvbnMiLCJ0b1VwcGVyQ2FzZSIsImhlYWRlcnMiLCJyZXNvbHZlV2l0aEZ1bGxSZXNwb25zZSIsIkFjY2VwdCIsImFjY2VwdFR5cGUiLCJjb250ZW50VHlwZSIsImluY2x1ZGVzIiwiRXJyb3IiLCJqb2luIiwiZmluYWxVcmwiLCJ1cmxXaXRob3V0U2xhc2giLCJ1IiwidGVzdCIsImlzTm9kZUpzIiwiVVJMIiwicGFyc2VVcmwiLCJlcnJvciIsInNlYXJjaCIsIkZvcm1EYXRhIiwiQmxvYiIsIkFycmF5QnVmZmVyIiwiRGF0YVZpZXciLCJSZWFkYWJsZVN0cmVhbSIsImlzTmF0aXZlQm9keSIsImJvZHkiLCJpc0pzb24iLCJKU09OIiwic3RyaW5naWZ5IiwiZmQiLCJlbnRyaWVzIiwidmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJ2Iiwic2VyaWFsaXplRm9ybURhdGEiLCJyZXNwb25zZSIsImZldGNoIiwib2siLCJlcnIiLCJzdGF0dXMiLCJzdGF0dXNUZXh0IiwidGV4dCIsImpzb24iLCJjb25zb2xlIiwid2FybiIsImJsb2IiLCJhcnJheUJ1ZmZlciIsIm5ldyIsInNldE9wdGlvbiIsInNldCIsImdldE9wdGlvbnMiLCJnZXQiLCJhc3NpZ24iLCJyZWR1Y2UiLCJhY2MiXSwic291cmNlcyI6WyIuLi8uLi9saWIvcmVxdWVzdC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05vZGVKcyB9IGZyb20gXCJ2YWx5cmlhbi5qc1wiO1xuaW1wb3J0IHsgZ2V0LCBzZXQgfSBmcm9tIFwidmFseXJpYW4uanMvdXRpbHNcIjtcblxuaW50ZXJmYWNlIFVybE9wdGlvbnMge1xuICBiYXNlPzogc3RyaW5nOyAvLyBVc2VkIHRvIHByZWZpeCB0aGUgdXJsIGZvciBzY29wZWQgcmVxdWVzdHMuXG4gIG5vZGU/OiBzdHJpbmcgfCBudWxsOyAvLyBVc2VkIHRvIHJlZGlyZWN0IGxvY2FsIHJlcXVlc3RzIHRvIG5vZGUgc2VydmVyIGZvciBzZXJ2ZXIgc2lkZSByZW5kZXJpbmcuXG4gIGFwaT86IHN0cmluZyB8IG51bGw7IC8vIFVzZWQgdG8gcmVkaXJlY3QgYXBpIHJlcXVlc3RzIHRvIG5vZGUgc2VydmVyIGZvciBzZXJ2ZXIgc2lkZSByZW5kZXJpbmcuXG59XG5cbmludGVyZmFjZSBSZXF1ZXN0T3B0aW9ucyB7XG4gIGFsbG93ZWRNZXRob2RzPzogc3RyaW5nW107XG4gIHVybHM/OiBVcmxPcHRpb25zO1xuICBba2V5OiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2xdOiBhbnk7XG59XG5cbmludGVyZmFjZSBSZXF1ZXN0T3B0aW9uc1dpdGhVcmxzIGV4dGVuZHMgUmVxdWVzdE9wdGlvbnMge1xuICB1cmxzOiBVcmxPcHRpb25zO1xuICBhbGxvd2VkTWV0aG9kczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBTZW5kT3B0aW9ucyBleHRlbmRzIFJlcXVlc3RPcHRpb25zV2l0aFVybHMsIFJlcXVlc3RJbml0IHtcbiAgYWxsb3dlZE1ldGhvZHM6IHN0cmluZ1tdO1xuICBtZXRob2Q6IHN0cmluZztcbiAgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcmVzb2x2ZVdpdGhGdWxsUmVzcG9uc2U/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RJbnRlcmZhY2Uge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgKG1ldGhvZDogc3RyaW5nLCB1cmw6IHN0cmluZywgZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsLCBvcHRpb25zPzogUGFydGlhbDxTZW5kT3B0aW9ucz4pOiBhbnkgfCBSZXNwb25zZTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIG5ldzogKGJhc2VVcmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKSA9PiBSZXF1ZXN0SW50ZXJmYWNlO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgc2V0T3B0aW9uczogKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB2b2lkO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgZ2V0T3B0aW9uczogKGtleT86IHN0cmluZykgPT4gUmVxdWVzdE9wdGlvbnMgfCB2b2lkO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgZ2V0OiAodXJsOiBzdHJpbmcsIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCwgb3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IGFueSB8IFJlc3BvbnNlO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgcG9zdDogKHVybDogc3RyaW5nLCBkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwsIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBhbnkgfCBSZXNwb25zZTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIHB1dDogKHVybDogc3RyaW5nLCBkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwsIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBhbnkgfCBSZXNwb25zZTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIHBhdGNoOiAodXJsOiBzdHJpbmcsIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCwgb3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IGFueSB8IFJlc3BvbnNlO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgZGVsZXRlOiAodXJsOiBzdHJpbmcsIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCwgb3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IGFueSB8IFJlc3BvbnNlO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgaGVhZDogKHVybDogc3RyaW5nLCBkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwsIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBhbnkgfCBSZXNwb25zZTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIG9wdGlvbnM6ICh1cmw6IHN0cmluZywgZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsLCBvcHRpb25zPzogUmVjb3JkPHN0cmluZywgYW55PikgPT4gYW55IHwgUmVzcG9uc2U7XG4gIFtrZXk6IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbF06IGFueTtcbn1cblxuLy8gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBzZXJpYWxpemUgYW4gb2JqZWN0IGludG8gYSBxdWVyeSBzdHJpbmcuXG5mdW5jdGlvbiBzZXJpYWxpemUob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBwcmVmaXg6IHN0cmluZyA9IFwiXCIpOiBVUkxTZWFyY2hQYXJhbXMge1xuICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG5cbiAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKChwcm9wOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBrZXkgPSBwcmVmaXggPyBgJHtwcmVmaXh9WyR7cHJvcH1dYCA6IHByb3A7XG4gICAgaWYgKHR5cGVvZiBvYmpbcHJvcF0gPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHBhcmFtcy5hcHBlbmQoa2V5LCBzZXJpYWxpemUob2JqW3Byb3BdLCBrZXkpLnRvU3RyaW5nKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMuYXBwZW5kKGtleSwgb2JqW3Byb3BdKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZUZvcm1EYXRhKGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBGb3JtRGF0YSB7XG4gIGNvbnN0IGZkID0gbmV3IEZvcm1EYXRhKCk7XG4gIE9iamVjdC5lbnRyaWVzKGRhdGEpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47IC8vIElnbm9yYXIgbnVsb3NcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdmFsdWUuZm9yRWFjaCgodikgPT4gZmQuYXBwZW5kKGtleSwgdikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmZC5hcHBlbmQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGZkO1xufVxuXG5mdW5jdGlvbiBwYXJzZVVybCh1cmw6IHN0cmluZywgb3B0aW9uczogUmVxdWVzdE9wdGlvbnNXaXRoVXJscykge1xuICBjb25zdCB1cmxXaXRob3V0U2xhc2ggPSB1cmwucmVwbGFjZSgvXFwvKyQvLCBcIlwiKS50cmltKCk7XG4gIGNvbnN0IHUgPSAvXmh0dHBzPy9naS50ZXN0KHVybFdpdGhvdXRTbGFzaCkgPyB1cmxXaXRob3V0U2xhc2ggOiBgJHtvcHRpb25zLnVybHMuYmFzZX0ke3VybFdpdGhvdXRTbGFzaH1gO1xuXG4gIGlmIChpc05vZGVKcyAmJiB0eXBlb2Ygb3B0aW9ucy51cmxzLm5vZGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMudXJscy5hcGkgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHUucmVwbGFjZShvcHRpb25zLnVybHMuYXBpLCBvcHRpb25zLnVybHMubm9kZSkpO1xuICAgIH1cblxuICAgIGlmICghL15odHRwcz8vZ2kudGVzdCh1KSkge1xuICAgICAgcmV0dXJuIG5ldyBVUkwodSwgb3B0aW9ucy51cmxzLm5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmICgvXmh0dHBzPy9naS50ZXN0KHUpKSB7XG4gICAgcmV0dXJuIG5ldyBVUkwodSk7XG4gIH1cblxuICByZXR1cm4gbmV3IFVSTCh1LCBvcHRpb25zLnVybHMuYmFzZSk7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyA9IHsgYWxsb3dlZE1ldGhvZHM6IFtcImdldFwiLCBcInBvc3RcIiwgXCJwdXRcIiwgXCJwYXRjaFwiLCBcImRlbGV0ZVwiLCBcImhlYWRcIiwgXCJvcHRpb25zXCJdIH07XG5cbmNvbnN0IGlzTmF0aXZlQm9keSA9IChkYXRhOiBhbnkpID0+XG4gIGRhdGEgaW5zdGFuY2VvZiBGb3JtRGF0YSB8fFxuICBkYXRhIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zIHx8XG4gIGRhdGEgaW5zdGFuY2VvZiBCbG9iIHx8XG4gIGRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciB8fFxuICAodHlwZW9mIERhdGFWaWV3ICE9PSBcInVuZGVmaW5lZFwiICYmIGRhdGEgaW5zdGFuY2VvZiBEYXRhVmlldykgfHxcbiAgKHR5cGVvZiBSZWFkYWJsZVN0cmVhbSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgUmVhZGFibGVTdHJlYW0pO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9jb2duaXRpdmUtY29tcGxleGl0eVxuZnVuY3Rpb24gUmVxdWVzdGVyKGJhc2VVcmwgPSBcIlwiLCBvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zKSB7XG4gIGNvbnN0IHVybCA9IGJhc2VVcmwucmVwbGFjZSgvXFwvJC9naSwgXCJcIikudHJpbSgpO1xuICBpZiAoIW9wdGlvbnMudXJscykge1xuICAgIG9wdGlvbnMudXJscyA9IHtcbiAgICAgIGJhc2U6IFwiXCIsXG4gICAgICBub2RlOiBudWxsLFxuICAgICAgYXBpOiBudWxsXG4gICAgfTtcbiAgfVxuXG4gIGlmICghb3B0aW9ucy5hbGxvd2VkTWV0aG9kcykge1xuICAgIG9wdGlvbnMuYWxsb3dlZE1ldGhvZHMgPSBkZWZhdWx0T3B0aW9ucy5hbGxvd2VkTWV0aG9kcztcbiAgfVxuXG4gIGNvbnN0IG9wdHM6IFJlcXVlc3RPcHRpb25zV2l0aFVybHMgPSB7XG4gICAgLi4uKG9wdGlvbnMgYXMgUmVxdWVzdE9wdGlvbnNXaXRoVXJscyksXG4gICAgdXJsczoge1xuICAgICAgbm9kZTogb3B0aW9ucy51cmxzLm5vZGUgfHwgbnVsbCxcbiAgICAgIGFwaTogb3B0aW9ucy51cmxzLmFwaSB8fCBudWxsLFxuICAgICAgYmFzZTogb3B0aW9ucy51cmxzLmJhc2UgPyBvcHRpb25zLnVybHMuYmFzZSArIHVybCA6IHVybFxuICAgIH1cbiAgfTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICBjb25zdCByZXF1ZXN0ID0gYXN5bmMgZnVuY3Rpb24gcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwsXG4gICAgb3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9XG4gICkge1xuICAgIGNvbnN0IGlubmVyT3B0aW9uczogU2VuZE9wdGlvbnMgPSB7XG4gICAgICBtZXRob2Q6IG1ldGhvZC50b1VwcGVyQ2FzZSgpLFxuICAgICAgaGVhZGVyczoge30sXG4gICAgICByZXNvbHZlV2l0aEZ1bGxSZXNwb25zZTogZmFsc2UsXG4gICAgICAuLi5vcHRzLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0gYXMgU2VuZE9wdGlvbnM7XG5cbiAgICBpbm5lck9wdGlvbnMuaGVhZGVycyA9IHsgLi4uaW5uZXJPcHRpb25zLmhlYWRlcnMsIC4uLm9wdHMuaGVhZGVycywgLi4ub3B0aW9ucy5oZWFkZXJzIH07XG5cbiAgICBpZiAoIWlubmVyT3B0aW9ucy5oZWFkZXJzLkFjY2VwdCkge1xuICAgICAgaW5uZXJPcHRpb25zLmhlYWRlcnMuQWNjZXB0ID0gXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgfVxuXG4gICAgY29uc3QgYWNjZXB0VHlwZSA9IGlubmVyT3B0aW9ucy5oZWFkZXJzLkFjY2VwdDtcbiAgICBjb25zdCBjb250ZW50VHlwZSA9IGlubmVyT3B0aW9ucy5oZWFkZXJzW1wiQ29udGVudC1UeXBlXCJdIHx8IGlubmVyT3B0aW9ucy5oZWFkZXJzW1wiY29udGVudC10eXBlXCJdIHx8IFwiXCI7XG5cbiAgICBpZiAoIWlubmVyT3B0aW9ucy5hbGxvd2VkTWV0aG9kcy5pbmNsdWRlcyhtZXRob2QpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1ldGhvZCAke21ldGhvZH0gbm90IGFsbG93ZWQuIEFsbG93ZWQgbWV0aG9kczogJHtpbm5lck9wdGlvbnMuYWxsb3dlZE1ldGhvZHMuam9pbihcIiwgXCIpfWApO1xuICAgIH1cblxuICAgIGxldCBmaW5hbFVybDogVVJMO1xuICAgIHRyeSB7XG4gICAgICBmaW5hbFVybCA9IHBhcnNlVXJsKHVybCwgb3B0cyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIFVSTDogJHt1cmx9YCk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChpbm5lck9wdGlvbnMubWV0aG9kID09PSBcIkdFVFwiICYmIHR5cGVvZiBkYXRhID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGZpbmFsVXJsLnNlYXJjaCA9IHNlcmlhbGl6ZShkYXRhKS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIGlmIChpc05hdGl2ZUJvZHkoZGF0YSkgfHwgdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaW5uZXJPcHRpb25zLmJvZHkgPSBkYXRhIGFzIEJvZHlJbml0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaXNKc29uID0gL2pzb24vZ2kudGVzdChjb250ZW50VHlwZSk7XG4gICAgICAgIGlmIChpc0pzb24pIHtcbiAgICAgICAgICBpbm5lck9wdGlvbnMuYm9keSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlubmVyT3B0aW9ucy5ib2R5ID0gc2VyaWFsaXplRm9ybURhdGEoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGZpbmFsVXJsLnRvU3RyaW5nKCksIGlubmVyT3B0aW9ucyk7XG4gICAgbGV0IGJvZHkgPSBudWxsO1xuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCkgYXMgRXJyb3IgJiB7IHJlc3BvbnNlPzogYW55OyBib2R5PzogYW55IH07XG4gICAgICBlcnIucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgICAgIGlmICgvdGV4dC9naS50ZXN0KGFjY2VwdFR5cGUpKSB7XG4gICAgICAgIGVyci5ib2R5ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoL2pzb24vZ2kudGVzdChhY2NlcHRUeXBlKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGVyci5ib2R5ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGVyci5ib2R5ID0gbnVsbDtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGNvbnNvbGUud2FybihcIkZhaWxlZCB0byBwYXJzZSBKU09OIHJlc3BvbnNlOlwiLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIGlmIChpbm5lck9wdGlvbnMucmVzb2x2ZVdpdGhGdWxsUmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBpZiAoL3RleHQvZ2kudGVzdChhY2NlcHRUeXBlKSkge1xuICAgICAgYm9keSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICB9IGVsc2UgaWYgKC9qc29uL2dpLnRlc3QoYWNjZXB0VHlwZSkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGJvZHkgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLndhcm4oXCJGYWlsZWQgdG8gcGFyc2UgSlNPTiByZXNwb25zZTpcIiwgZXJyb3IpO1xuICAgICAgICBib2R5ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKC9ibG9iL2dpLnRlc3QoYWNjZXB0VHlwZSkpIHtcbiAgICAgIGJvZHkgPSBhd2FpdCByZXNwb25zZS5ibG9iKCk7XG4gICAgfSBlbHNlIGlmICgvYXJyYXlidWZmZXIvZ2kudGVzdChhY2NlcHRUeXBlKSkge1xuICAgICAgYm9keSA9IGF3YWl0IHJlc3BvbnNlLmFycmF5QnVmZmVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvZHkgPSByZXNwb25zZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYm9keSB8fCByZXNwb25zZTtcbiAgfSBhcyB1bmtub3duIGFzIFJlcXVlc3RJbnRlcmZhY2U7XG5cbiAgcmVxdWVzdC5uZXcgPSAoYmFzZVVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpID0+IFJlcXVlc3RlcihiYXNlVXJsLCB7IC4uLm9wdHMsIC4uLihvcHRpb25zIHx8IHt9KSB9KTtcblxuICByZXF1ZXN0LnNldE9wdGlvbiA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICAgIHNldChvcHRzLCBrZXksIHZhbHVlKTtcbiAgICByZXR1cm4gb3B0cztcbiAgfTtcblxuICByZXF1ZXN0LmdldE9wdGlvbnMgPSAoa2V5Pzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGtleSkge1xuICAgICAgcmV0dXJuIGdldChvcHRzLCBrZXkpO1xuICAgIH1cblxuICAgIHJldHVybiBvcHRzO1xuICB9O1xuXG4gIE9iamVjdC5hc3NpZ24oXG4gICAgcmVxdWVzdCxcbiAgICBvcHRzLmFsbG93ZWRNZXRob2RzLnJlZHVjZSgoYWNjOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBtZXRob2QpID0+IHtcbiAgICAgIGFjY1ttZXRob2RdID0gKHVybDogc3RyaW5nLCBkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwsIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PlxuICAgICAgICByZXF1ZXN0KG1ldGhvZCwgdXJsLCBkYXRhLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pXG4gICk7XG5cbiAgcmV0dXJuIHJlcXVlc3Q7XG59XG5cbmV4cG9ydCBjb25zdCByZXF1ZXN0ID0gUmVxdWVzdGVyKCk7XG4iXSwibWFwcGluZ3MiOiJnSkFBQUEsRUFBQSxHLHlEQUFBQyxDQUFBRCxFQUFBLENB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
|
package/dist/request/index.mjs
CHANGED
|
@@ -14,10 +14,16 @@ function serialize(obj, prefix = "") {
|
|
|
14
14
|
return params;
|
|
15
15
|
}
|
|
16
16
|
function serializeFormData(data) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return
|
|
20
|
-
|
|
17
|
+
const fd = new FormData();
|
|
18
|
+
Object.entries(data).forEach(([key, value]) => {
|
|
19
|
+
if (value === null || value === void 0) return;
|
|
20
|
+
if (Array.isArray(value)) {
|
|
21
|
+
value.forEach((v) => fd.append(key, v));
|
|
22
|
+
} else {
|
|
23
|
+
fd.append(key, value);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
return fd;
|
|
21
27
|
}
|
|
22
28
|
function parseUrl(url, options) {
|
|
23
29
|
const urlWithoutSlash = url.replace(/\/+$/, "").trim();
|
|
@@ -36,6 +42,7 @@ function parseUrl(url, options) {
|
|
|
36
42
|
return new URL(u, options.urls.base);
|
|
37
43
|
}
|
|
38
44
|
var defaultOptions = { allowedMethods: ["get", "post", "put", "patch", "delete", "head", "options"] };
|
|
45
|
+
var isNativeBody = (data) => data instanceof FormData || data instanceof URLSearchParams || data instanceof Blob || data instanceof ArrayBuffer || typeof DataView !== "undefined" && data instanceof DataView || typeof ReadableStream !== "undefined" && data instanceof ReadableStream;
|
|
39
46
|
function Requester(baseUrl = "", options = defaultOptions) {
|
|
40
47
|
const url = baseUrl.replace(/\/$/gi, "").trim();
|
|
41
48
|
if (!options.urls) {
|
|
@@ -80,11 +87,17 @@ function Requester(baseUrl = "", options = defaultOptions) {
|
|
|
80
87
|
throw new Error(`Failed to parse URL: ${url2}`);
|
|
81
88
|
}
|
|
82
89
|
if (data) {
|
|
83
|
-
const isJson = /json/gi.test(contentType);
|
|
84
90
|
if (innerOptions.method === "GET" && typeof data === "object") {
|
|
85
91
|
finalUrl.search = serialize(data).toString();
|
|
86
|
-
} else if (
|
|
87
|
-
innerOptions.body =
|
|
92
|
+
} else if (isNativeBody(data) || typeof data === "string") {
|
|
93
|
+
innerOptions.body = data;
|
|
94
|
+
} else {
|
|
95
|
+
const isJson = /json/gi.test(contentType);
|
|
96
|
+
if (isJson) {
|
|
97
|
+
innerOptions.body = JSON.stringify(data);
|
|
98
|
+
} else {
|
|
99
|
+
innerOptions.body = serializeFormData(data);
|
|
100
|
+
}
|
|
88
101
|
}
|
|
89
102
|
}
|
|
90
103
|
const response = await fetch(finalUrl.toString(), innerOptions);
|