Socket
Socket
Sign inDemoInstall

@shopify/react-network

Package Overview
Dependencies
Maintainers
13
Versions
162
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@shopify/react-network - npm Package Compare versions

Comparing version 3.3.0-beta.1 to 3.3.1

dist/ServerCookieManager.d.ts

8

CHANGELOG.md

@@ -10,7 +10,9 @@ # Changelog

## [3.3.0]
## [3.2.0]
- Add `useNetworkManager` hook [#1018](https://github.com/Shopify/quilt/pull/1018)
- Add server state management to `NetworkManager` and update `applyToContext` to support server state [#1018](https://github.com/Shopify/quilt/pull/1018)
## Added
- The NetworkManager now accepts a `cookies` property in its constructor. This value is used to create a `ServerCookieManager` that can be accessed on the NetworkManger class instance. [#1002](https://github.com/Shopify/quilt/pull/1002)
- Added a new hook `useNetworkManager()` that returns the network manager. [#1002](https://github.com/Shopify/quilt/pull/1002)
## [3.2.0]

@@ -17,0 +19,0 @@

import { Language } from 'accept-language-parser';
import { CspDirective, StatusCode } from '@shopify/network';
import { NetworkManager } from './manager';
export declare function useNetworkManager(): NetworkManager | null;
export declare function useNetworkEffect(perform: (network: NetworkManager) => void): void;

@@ -9,4 +8,5 @@ export declare function useCspDirective(directive: CspDirective, source: string | string[] | boolean): void;

export declare function useHeader(header: string, value: string): void;
export declare function useNetworkManager(): NetworkManager | null;
export declare function useStatus(code: StatusCode): void;
export declare function useRedirect(url: string, status?: StatusCode): void;
export declare function useAcceptLanguage(fallback?: Language): Language[];

@@ -8,6 +8,2 @@ "use strict";

var context_1 = require("./context");
function useNetworkManager() {
return react_1.useContext(context_1.NetworkContext);
}
exports.useNetworkManager = useNetworkManager;
function useNetworkEffect(perform) {

@@ -35,2 +31,6 @@ var network = react_1.useContext(context_1.NetworkContext);

exports.useHeader = useHeader;
function useNetworkManager() {
return react_1.useContext(context_1.NetworkContext);
}
exports.useNetworkManager = useNetworkManager;
function useStatus(code) {

@@ -37,0 +37,0 @@ useNetworkEffect(function (network) { return network.addStatusCode(code); });

export * from '@shopify/network';
export * from './components';
export { NetworkManager, STATE_ID } from './manager';
export { NetworkManager } from './manager';
export { NetworkContext } from './context';
export { useNetworkManager, useNetworkEffect, useStatus, useCspDirective, useHeader, useRequestHeader, useRedirect, useAcceptLanguage, } from './hooks';
export { ServerCookieManager } from './ServerCookieManager';
export { useNetworkEffect, useStatus, useCspDirective, useHeader, useRequestHeader, useRedirect, useAcceptLanguage, useNetworkManager, } from './hooks';

@@ -8,7 +8,7 @@ "use strict";

exports.NetworkManager = manager_1.NetworkManager;
exports.STATE_ID = manager_1.STATE_ID;
var context_1 = require("./context");
exports.NetworkContext = context_1.NetworkContext;
var ServerCookieManager_1 = require("./ServerCookieManager");
exports.ServerCookieManager = ServerCookieManager_1.ServerCookieManager;
var hooks_1 = require("./hooks");
exports.useNetworkManager = hooks_1.useNetworkManager;
exports.useNetworkEffect = hooks_1.useNetworkEffect;

@@ -21,1 +21,2 @@ exports.useStatus = hooks_1.useStatus;

exports.useAcceptLanguage = hooks_1.useAcceptLanguage;
exports.useNetworkManager = hooks_1.useNetworkManager;

@@ -1,23 +0,21 @@

import { Context } from 'koa';
import { StatusCode, CspDirective } from '@shopify/network';
import { EffectKind } from '@shopify/react-effect';
import { ServerCookieManager, Cookie } from './ServerCookieManager';
export { NetworkContext } from './context';
export declare const EFFECT_ID: unique symbol;
export declare const STATE_ID: unique symbol;
interface Options {
headers?: Record<string, string>;
cookies?: Cookie | string;
}
export declare class NetworkManager {
readonly effect: EffectKind;
cookies: ServerCookieManager;
private statusCodes;
private redirectUrl?;
private serverState;
private readonly csp;
private readonly headers;
private readonly requestHeaders;
constructor({ headers }?: Options);
constructor({ headers, cookies }?: Options);
reset(): void;
getHeader(header: string): string;
getServerState(): Context['state'];
setServerState(newState: Context['state']): void;
setHeader(header: string, value: string): void;

@@ -30,5 +28,7 @@ redirectTo(url: string, status?: StatusCode): void;

headers: Map<string, string>;
cookies: {
[x: string]: import("./ServerCookieManager").CookieValue;
};
redirectUrl: string | undefined;
serverState: any;
};
}

@@ -5,9 +5,9 @@ "use strict";

var network_1 = require("@shopify/network");
var ServerCookieManager_1 = require("./ServerCookieManager");
var context_1 = require("./context");
exports.NetworkContext = context_1.NetworkContext;
exports.EFFECT_ID = Symbol('network');
exports.STATE_ID = Symbol('network-state');
var NetworkManager = /** @class */ (function () {
function NetworkManager(_a) {
var headers = (_a === void 0 ? {} : _a).headers;
var _b = _a === void 0 ? {} : _a, headers = _b.headers, cookies = _b.cookies;
var _this = this;

@@ -27,2 +27,3 @@ this.effect = {

this.requestHeaders = normalizeHeaders(headers);
this.cookies = new ServerCookieManager_1.ServerCookieManager(cookies);
}

@@ -33,4 +34,4 @@ NetworkManager.prototype.reset = function () {

this.headers.clear();
this.cookies.clear();
this.redirectUrl = undefined;
this.serverState = {};
};

@@ -40,8 +41,2 @@ NetworkManager.prototype.getHeader = function (header) {

};
NetworkManager.prototype.getServerState = function () {
return this.serverState || {};
};
NetworkManager.prototype.setServerState = function (newState) {
this.serverState = newState;
};
NetworkManager.prototype.setHeader = function (header, value) {

@@ -95,4 +90,4 @@ this.headers.set(header, value);

headers: headers,
cookies: this.cookies.getCookies(),
redirectUrl: this.redirectUrl,
serverState: this.serverState,
};

@@ -99,0 +94,0 @@ };

@@ -6,2 +6,1 @@ import { Context } from 'koa';

export declare function applyToContext<T extends Context>(ctx: T, manager: NetworkManager): T;
export declare function getServerState<T extends Context>(ctx: T): any;

@@ -11,3 +11,3 @@ "use strict";

var e_1, _a;
var _b = manager.extract(), status = _b.status, redirectUrl = _b.redirectUrl, headers = _b.headers, serverState = _b.serverState;
var _b = manager.extract(), status = _b.status, redirectUrl = _b.redirectUrl, headers = _b.headers, cookies = _b.cookies;
if (redirectUrl) {

@@ -32,9 +32,11 @@ ctx.redirect(redirectUrl);

}
ctx.state[manager_1.STATE_ID] = serverState;
Object.entries(cookies).forEach(function (_a) {
var _b = tslib_1.__read(_a, 2), cookie = _b[0], options = _b[1];
var value = options.value, cookieOptions = tslib_1.__rest(options, ["value"]);
// missing 'none` in `sameSite`
// https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/cookies/index.d.ts#L91
ctx.cookies.set(cookie, value, cookieOptions);
});
return ctx;
}
exports.applyToContext = applyToContext;
function getServerState(ctx) {
return ctx.state[manager_1.STATE_ID];
}
exports.getServerState = getServerState;
{
"name": "@shopify/react-network",
"version": "3.3.0-beta.1",
"version": "3.3.1",
"license": "MIT",

@@ -30,4 +30,6 @@ "description": "A collection of components that allow you to set common HTTP headers from within your React application.",

"@types/accept-language-parser": "1.5.0",
"@types/cookie": "^0.3.3",
"@types/koa": "^2.0.46",
"accept-language-parser": "1.5.0",
"cookie": "^0.4.0",
"tslib": "^1.9.3"

@@ -34,0 +36,0 @@ },

@@ -122,2 +122,22 @@ # `@shopify/react-network`

#### `useNetworkManager()`
Returns the full network manager from context.
```tsx
import React from 'react';
import {useNetworkManager} from '@shopify/react-network';
import {CookieContext} from './context';
export function CookieProvider({children}: Props) {
const manager = useNetworkManager();
return (
<CookieContext.Provider value={manager.cookies}>
{children}
</CookieContext.Provider>
);
}
```
### Server

@@ -124,0 +144,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc