Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): use external @edge-runtime/cookies #42736

Merged
merged 31 commits into from Feb 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
18e8bef
chore(deps): add `@edge-runtime/cookies`
balazsorban44 Nov 10, 2022
03f42fb
use precompiled version of `@edge-runtimer/cookies`
balazsorban44 Nov 10, 2022
2f149f2
Merge branch 'canary' into chore/edge-runtime-cookies
balazsorban44 Nov 11, 2022
66ff4a7
use ESM
balazsorban44 Nov 11, 2022
1df3417
Merge branch 'chore/edge-runtime-cookies' of github.com:vercel/next.j…
balazsorban44 Nov 11, 2022
5533210
Merge branch 'canary' into chore/edge-runtime-cookies
balazsorban44 Feb 7, 2023
7749e46
update precompiled
balazsorban44 Feb 7, 2023
e1683ee
update
balazsorban44 Feb 7, 2023
9623b98
Merge branch 'canary' into chore/edge-runtime-cookies
balazsorban44 Feb 8, 2023
369dafc
revert
balazsorban44 Feb 8, 2023
c78b4e0
Merge branch 'chore/edge-runtime-cookies' of https://github.com/verce…
balazsorban44 Feb 8, 2023
d0f97a8
fix test
balazsorban44 Feb 8, 2023
01b9eb8
use CJS version
balazsorban44 Feb 8, 2023
edacc60
update `edge-runtime` packages
balazsorban44 Feb 8, 2023
4d6cda4
Update misc.d.ts
balazsorban44 Feb 8, 2023
5f18e98
update `@edge-runtime/jest-environemnt`
balazsorban44 Feb 8, 2023
2cf7bcf
fix type
balazsorban44 Feb 8, 2023
ae8bb8b
revert some lock file changes
balazsorban44 Feb 8, 2023
77d4755
update precompiled 🤷
balazsorban44 Feb 8, 2023
47d531f
don't treat as ESM
balazsorban44 Feb 8, 2023
ca0046a
precompile!
balazsorban44 Feb 8, 2023
cd52f5e
revert
balazsorban44 Feb 8, 2023
2b1e96a
Merge branch 'canary' into chore/edge-runtime-cookies
balazsorban44 Feb 8, 2023
73637f7
Merge branch 'canary' into chore/edge-runtime-cookies
ijjk Feb 15, 2023
5591f30
Merge branch 'canary' into chore/edge-runtime-cookies
balazsorban44 Feb 15, 2023
35f0a0a
Merge branch 'canary' into chore/edge-runtime-cookies
balazsorban44 Feb 16, 2023
4c91693
Merge branch 'canary' into chore/edge-runtime-cookies
balazsorban44 Feb 17, 2023
d3d7f7e
downgrade `edge-runtime`
balazsorban44 Feb 17, 2023
2c7b88b
downgrade, precompile
balazsorban44 Feb 17, 2023
6d0854c
revert
balazsorban44 Feb 17, 2023
932564f
precompile?
balazsorban44 Feb 17, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -58,7 +58,7 @@
"@babel/plugin-proposal-object-rest-spread": "7.14.7",
"@babel/preset-flow": "7.14.5",
"@babel/preset-react": "7.14.5",
"@edge-runtime/jest-environment": "2.0.0",
"@edge-runtime/jest-environment": "2.0.5",
"@fullhuman/postcss-purgecss": "1.3.0",
"@mdx-js/loader": "2.2.1",
"@mdx-js/react": "2.2.1",
Expand Down
3 changes: 2 additions & 1 deletion packages/next/package.json
Expand Up @@ -126,7 +126,8 @@
"@babel/runtime": "7.15.4",
"@babel/traverse": "7.18.0",
"@babel/types": "7.18.0",
"@edge-runtime/primitives": "2.0.0",
"@edge-runtime/cookies": "3.0.4",
"@edge-runtime/primitives": "2.0.5",
"@hapi/accept": "5.0.2",
"@napi-rs/cli": "2.14.7",
"@napi-rs/triples": "1.1.0",
Expand Down
187 changes: 187 additions & 0 deletions packages/next/src/compiled/@edge-runtime/cookies/index.d.ts
@@ -0,0 +1,187 @@
// Type definitions for cookie 0.5
// Project: https://github.com/jshttp/cookie
// Definitions by: Pine Mizune <https://github.com/pine>
// Piotr Błażejewicz <https://github.com/peterblazejewicz>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped

/**
* Basic HTTP cookie parser and serializer for HTTP servers.
*/

/**
* Additional serialization options
*/
interface CookieSerializeOptions {
/**
* Specifies the value for the {@link https://tools.ietf.org/html/rfc6265#section-5.2.3|Domain Set-Cookie attribute}. By default, no
* domain is set, and most clients will consider the cookie to apply to only
* the current domain.
*/
domain?: string | undefined;

/**
* Specifies a function that will be used to encode a cookie's value. Since
* value of a cookie has a limited character set (and must be a simple
* string), this function can be used to encode a value into a string suited
* for a cookie's value.
*
* The default function is the global `encodeURIComponent`, which will
* encode a JavaScript string into UTF-8 byte sequences and then URL-encode
* any that fall outside of the cookie range.
*/
encode?(value: string): string;

/**
* Specifies the `Date` object to be the value for the {@link https://tools.ietf.org/html/rfc6265#section-5.2.1|`Expires` `Set-Cookie` attribute}. By default,
* no expiration is set, and most clients will consider this a "non-persistent cookie" and will delete
* it on a condition like exiting a web browser application.
*
* *Note* the {@link https://tools.ietf.org/html/rfc6265#section-5.3|cookie storage model specification}
* states that if both `expires` and `maxAge` are set, then `maxAge` takes precedence, but it is
* possible not all clients by obey this, so if both are set, they should
* point to the same date and time.
*/
expires?: Date | undefined;
/**
* Specifies the boolean value for the {@link https://tools.ietf.org/html/rfc6265#section-5.2.6|`HttpOnly` `Set-Cookie` attribute}.
* When truthy, the `HttpOnly` attribute is set, otherwise it is not. By
* default, the `HttpOnly` attribute is not set.
*
* *Note* be careful when setting this to true, as compliant clients will
* not allow client-side JavaScript to see the cookie in `document.cookie`.
*/
httpOnly?: boolean | undefined;
/**
* Specifies the number (in seconds) to be the value for the `Max-Age`
* `Set-Cookie` attribute. The given number will be converted to an integer
* by rounding down. By default, no maximum age is set.
*
* *Note* the {@link https://tools.ietf.org/html/rfc6265#section-5.3|cookie storage model specification}
* states that if both `expires` and `maxAge` are set, then `maxAge` takes precedence, but it is
* possible not all clients by obey this, so if both are set, they should
* point to the same date and time.
*/
maxAge?: number | undefined;
/**
* Specifies the value for the {@link https://tools.ietf.org/html/rfc6265#section-5.2.4|`Path` `Set-Cookie` attribute}.
* By default, the path is considered the "default path".
*/
path?: string | undefined;
/**
* Specifies the `string` to be the value for the [`Priority` `Set-Cookie` attribute][rfc-west-cookie-priority-00-4.1].
*
* - `'low'` will set the `Priority` attribute to `Low`.
* - `'medium'` will set the `Priority` attribute to `Medium`, the default priority when not set.
* - `'high'` will set the `Priority` attribute to `High`.
*
* More information about the different priority levels can be found in
* [the specification][rfc-west-cookie-priority-00-4.1].
*
* **note** This is an attribute that has not yet been fully standardized, and may change in the future.
* This also means many clients may ignore this attribute until they understand it.
*/
priority?: 'low' | 'medium' | 'high' | undefined;
/**
* Specifies the boolean or string to be the value for the {@link https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-4.1.2.7|`SameSite` `Set-Cookie` attribute}.
*
* - `true` will set the `SameSite` attribute to `Strict` for strict same
* site enforcement.
* - `false` will not set the `SameSite` attribute.
* - `'lax'` will set the `SameSite` attribute to Lax for lax same site
* enforcement.
* - `'strict'` will set the `SameSite` attribute to Strict for strict same
* site enforcement.
* - `'none'` will set the SameSite attribute to None for an explicit
* cross-site cookie.
*
* More information about the different enforcement levels can be found in {@link https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-4.1.2.7|the specification}.
*
* *note* This is an attribute that has not yet been fully standardized, and may change in the future. This also means many clients may ignore this attribute until they understand it.
*/
sameSite?: true | false | 'lax' | 'strict' | 'none' | undefined;
/**
* Specifies the boolean value for the {@link https://tools.ietf.org/html/rfc6265#section-5.2.5|`Secure` `Set-Cookie` attribute}. When truthy, the
* `Secure` attribute is set, otherwise it is not. By default, the `Secure` attribute is not set.
*
* *Note* be careful when setting this to `true`, as compliant clients will
* not send the cookie back to the server in the future if the browser does
* not have an HTTPS connection.
*/
secure?: boolean | undefined;
}

/**
* {@link https://wicg.github.io/cookie-store/#dictdef-cookielistitem CookieListItem}
* as specified by W3C.
*/
interface CookieListItem extends Pick<CookieSerializeOptions, 'domain' | 'path' | 'expires' | 'secure' | 'sameSite'> {
/** A string with the name of a cookie. */
name: string;
/** A string containing the value of the cookie. */
value: string;
}
/**
* Superset of {@link CookieListItem} extending it with
* the `httpOnly`, `maxAge` and `priority` properties.
*/
type ResponseCookie = CookieListItem & Pick<CookieSerializeOptions, 'httpOnly' | 'maxAge' | 'priority'>;
/**
* Subset of {@link CookieListItem}, only containing `name` and `value`
* since other cookie attributes aren't be available on a `Request`.
*/
type RequestCookie = Pick<CookieListItem, 'name' | 'value'>;

/**
* A class for manipulating {@link Request} cookies (`Cookie` header).
*/
declare class RequestCookies {
constructor(requestHeaders: Headers);
[Symbol.iterator](): IterableIterator<[string, RequestCookie]>;
/**
* The amount of cookies received from the client
*/
get size(): number;
get(...args: [name: string] | [RequestCookie]): RequestCookie | undefined;
getAll(...args: [name: string] | [RequestCookie] | []): RequestCookie[];
has(name: string): boolean;
set(...args: [key: string, value: string] | [options: RequestCookie]): this;
/**
* Delete the cookies matching the passed name or names in the request.
*/
delete(
/** Name or names of the cookies to be deleted */
names: string | string[]): boolean | boolean[];
/**
* Delete all the cookies in the cookies in the request.
*/
clear(): this;
toString(): string;
}

/**
* A class for manipulating {@link Response} cookies (`Set-Cookie` header).
* Loose implementation of the experimental [Cookie Store API](https://wicg.github.io/cookie-store/#dictdef-cookie)
* The main difference is `ResponseCookies` methods do not return a Promise.
*/
declare class ResponseCookies {
constructor(responseHeaders: Headers);
/**
* {@link https://wicg.github.io/cookie-store/#CookieStore-get CookieStore#get} without the Promise.
*/
get(...args: [key: string] | [options: ResponseCookie]): ResponseCookie | undefined;
/**
* {@link https://wicg.github.io/cookie-store/#CookieStore-getAll CookieStore#getAll} without the Promise.
*/
getAll(...args: [key: string] | [options: ResponseCookie] | []): ResponseCookie[];
/**
* {@link https://wicg.github.io/cookie-store/#CookieStore-set CookieStore#set} without the Promise.
*/
set(...args: [key: string, value: string, cookie?: Partial<ResponseCookie>] | [options: ResponseCookie]): this;
/**
* {@link https://wicg.github.io/cookie-store/#CookieStore-delete CookieStore#delete} without the Promise.
*/
delete(...args: [key: string] | [options: ResponseCookie]): this;
toString(): string;
}

export { CookieListItem, RequestCookie, RequestCookies, ResponseCookie, ResponseCookies };