@aws-amplify/adapter-nextjs 0.0.2-preview-testing.034e780.0 → 0.0.2-server-generate-client.1e317a1.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/lib/generateServerClient.d.ts +7 -0
- package/lib/generateServerClient.js +31 -0
- package/lib/generateServerClient.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/runWithAmplifyServerContext.js +1 -1
- package/lib/utils/createCookieStorageAdapterFromNextServerContext.js +32 -13
- package/lib/utils/createCookieStorageAdapterFromNextServerContext.js.map +1 -1
- package/lib-esm/generateServerClient.d.ts +7 -0
- package/lib-esm/generateServerClient.js +27 -0
- package/lib-esm/generateServerClient.js.map +1 -0
- package/lib-esm/index.d.ts +1 -0
- package/lib-esm/index.js +1 -0
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/runWithAmplifyServerContext.js +2 -2
- package/lib-esm/utils/createCookieStorageAdapterFromNextServerContext.js +32 -13
- package/lib-esm/utils/createCookieStorageAdapterFromNextServerContext.js.map +1 -1
- package/package.json +110 -110
- package/src/generateServerClient.ts +39 -0
- package/src/index.ts +1 -0
- package/src/runWithAmplifyServerContext.ts +2 -2
- package/src/utils/createCookieStorageAdapterFromNextServerContext.ts +40 -13
- package/with-amplify/package.json +7 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { V6Client } from '@aws-amplify/api-graphql';
|
|
2
|
+
import { NextServer } from './types';
|
|
3
|
+
export type { GraphQLResult, GraphQLReturnType, } from '@aws-amplify/api-graphql';
|
|
4
|
+
/**
|
|
5
|
+
* Generates an API client that can work with models or raw GraphQL
|
|
6
|
+
*/
|
|
7
|
+
export declare function generateServerClient<T extends Record<any, any> = never>(nextServerContext: NextServer.Context): V6Client<T>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.generateServerClient = void 0;
|
|
6
|
+
var internals_1 = require("@aws-amplify/api-graphql/internals");
|
|
7
|
+
var adapter_core_1 = require("@aws-amplify/core/internals/adapter-core");
|
|
8
|
+
var runWithAmplifyServerContext_1 = require("./runWithAmplifyServerContext");
|
|
9
|
+
var getAmplifyConfig_1 = require("./utils/getAmplifyConfig");
|
|
10
|
+
/**
|
|
11
|
+
* Generates an API client that can work with models or raw GraphQL
|
|
12
|
+
*/
|
|
13
|
+
function generateServerClient(nextServerContext) {
|
|
14
|
+
// This function reference gets passed down to InternalGraphQLAPI.graphql
|
|
15
|
+
// where this._graphql is passed through as the `fn` argument
|
|
16
|
+
// causing it to always get invoked inside `runWithAmplifyServerContext`
|
|
17
|
+
var getAmplify = function (fn) {
|
|
18
|
+
return (0, runWithAmplifyServerContext_1.runWithAmplifyServerContext)({
|
|
19
|
+
nextServerContext: nextServerContext,
|
|
20
|
+
operation: function (contextSpec) {
|
|
21
|
+
return fn((0, adapter_core_1.getAmplifyServerContext)(contextSpec).amplify);
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
// retrieve general SSR config. This is used only for get the
|
|
26
|
+
// modelIntroSchema in generateModelsProperty
|
|
27
|
+
var config = (0, getAmplifyConfig_1.getAmplifyConfig)();
|
|
28
|
+
return (0, internals_1.generateClient)({ amplify: getAmplify, config: config });
|
|
29
|
+
}
|
|
30
|
+
exports.generateServerClient = generateServerClient;
|
|
31
|
+
//# sourceMappingURL=generateServerClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateServerClient.js","sourceRoot":"","sources":["../src/generateServerClient.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;;;AAEtC,gEAA8F;AAC9F,yEAAmF;AAInF,6EAA4E;AAC5E,6DAA4D;AAQ5D;;GAEG;AACH,SAAgB,oBAAoB,CACnC,iBAAqC;IAErC,yEAAyE;IACzE,6DAA6D;IAC7D,wEAAwE;IACxE,IAAM,UAAU,GAAG,UAAC,EAAkC;QACrD,OAAA,IAAA,yDAA2B,EAAC;YAC3B,iBAAiB,mBAAA;YACjB,SAAS,EAAE,UAAA,WAAW;gBACrB,OAAA,EAAE,CAAC,IAAA,sCAAuB,EAAC,WAAW,CAAC,CAAC,OAAO,CAAC;YAAhD,CAAgD;SACjD,CAAC;IAJF,CAIE,CAAC;IAEJ,6DAA6D;IAC7D,6CAA6C;IAC7C,IAAM,MAAM,GAAG,IAAA,mCAAgB,GAAE,CAAC;IAElC,OAAO,IAAA,0BAAsB,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;AAChE,CAAC;AAlBD,oDAkBC"}
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.runWithAmplifyServerContext = void 0;
|
|
5
|
+
exports.generateServerClient = exports.runWithAmplifyServerContext = void 0;
|
|
6
6
|
var runWithAmplifyServerContext_1 = require("./runWithAmplifyServerContext");
|
|
7
7
|
Object.defineProperty(exports, "runWithAmplifyServerContext", { enumerable: true, get: function () { return runWithAmplifyServerContext_1.runWithAmplifyServerContext; } });
|
|
8
|
+
var generateServerClient_1 = require("./generateServerClient");
|
|
9
|
+
Object.defineProperty(exports, "generateServerClient", { enumerable: true, get: function () { return generateServerClient_1.generateServerClient; } });
|
|
8
10
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;;;AAEtC,6EAA4E;AAAnE,0IAAA,2BAA2B,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;;;AAEtC,6EAA4E;AAAnE,0IAAA,2BAA2B,OAAA;AACpC,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA"}
|
|
@@ -100,7 +100,7 @@ var runWithAmplifyServerContext = function (_a) {
|
|
|
100
100
|
// safe to use the singleton `MemoryKeyValueStorage` here, as the
|
|
101
101
|
// static rendering uses the same unauthenticated role cross-sever.
|
|
102
102
|
nextServerContext === null
|
|
103
|
-
? core_1.
|
|
103
|
+
? core_1.sharedInMemoryStorage
|
|
104
104
|
: (0, adapter_core_1.createKeyValueStorageFromCookieStorageAdapter)((0, utils_1.createCookieStorageAdapterFromNextServerContext)(nextServerContext));
|
|
105
105
|
credentialsProvider = (0, adapter_core_1.createAWSCredentialsAndIdentityIdProvider)(amplifyConfig.Auth, keyValueStorage);
|
|
106
106
|
tokenProvider = (0, adapter_core_1.createUserPoolsTokenProvider)(amplifyConfig.Auth, keyValueStorage);
|
|
@@ -59,16 +59,24 @@ var createCookieStorageAdapterFromNextRequestAndNextResponse = function (request
|
|
|
59
59
|
var readonlyCookieStore = request.cookies;
|
|
60
60
|
var mutableCookieStore = response.cookies;
|
|
61
61
|
return {
|
|
62
|
-
get:
|
|
62
|
+
get: function (name) {
|
|
63
|
+
return readonlyCookieStore.get(ensureEncodedForJSCookie(name));
|
|
64
|
+
},
|
|
63
65
|
getAll: readonlyCookieStore.getAll.bind(readonlyCookieStore),
|
|
64
|
-
set:
|
|
65
|
-
|
|
66
|
+
set: function (name, value, options) {
|
|
67
|
+
mutableCookieStore.set(ensureEncodedForJSCookie(name), value, options);
|
|
68
|
+
},
|
|
69
|
+
delete: function (name) {
|
|
70
|
+
mutableCookieStore.delete(ensureEncodedForJSCookie(name));
|
|
71
|
+
},
|
|
66
72
|
};
|
|
67
73
|
};
|
|
68
74
|
var createCookieStorageAdapterFromNextRequestAndHttpResponse = function (request, response) {
|
|
69
75
|
var readonlyCookieStore = request.cookies;
|
|
70
76
|
var mutableCookieStore = createMutableCookieStoreFromHeaders(response.headers);
|
|
71
|
-
return __assign({ get:
|
|
77
|
+
return __assign({ get: function (name) {
|
|
78
|
+
return readonlyCookieStore.get(ensureEncodedForJSCookie(name));
|
|
79
|
+
}, getAll: readonlyCookieStore.getAll.bind(readonlyCookieStore) }, mutableCookieStore);
|
|
72
80
|
};
|
|
73
81
|
var createCookieStorageAdapterFromNextCookies = function (cookies) {
|
|
74
82
|
var cookieStore = cookies();
|
|
@@ -79,7 +87,7 @@ var createCookieStorageAdapterFromNextCookies = function (cookies) {
|
|
|
79
87
|
// and safely ignore the error if it is thrown.
|
|
80
88
|
var setFunc = function (name, value, options) {
|
|
81
89
|
try {
|
|
82
|
-
cookieStore.set(name, value, options);
|
|
90
|
+
cookieStore.set(ensureEncodedForJSCookie(name), value, options);
|
|
83
91
|
}
|
|
84
92
|
catch (_a) {
|
|
85
93
|
// no-op
|
|
@@ -87,14 +95,16 @@ var createCookieStorageAdapterFromNextCookies = function (cookies) {
|
|
|
87
95
|
};
|
|
88
96
|
var deleteFunc = function (name) {
|
|
89
97
|
try {
|
|
90
|
-
cookieStore.delete(name);
|
|
98
|
+
cookieStore.delete(ensureEncodedForJSCookie(name));
|
|
91
99
|
}
|
|
92
100
|
catch (_a) {
|
|
93
101
|
// no-op
|
|
94
102
|
}
|
|
95
103
|
};
|
|
96
104
|
return {
|
|
97
|
-
get:
|
|
105
|
+
get: function (name) {
|
|
106
|
+
return cookieStore.get(ensureEncodedForJSCookie(name));
|
|
107
|
+
},
|
|
98
108
|
getAll: cookieStore.getAll.bind(cookieStore),
|
|
99
109
|
set: setFunc,
|
|
100
110
|
delete: deleteFunc,
|
|
@@ -111,7 +121,7 @@ var createCookieStorageAdapterFromGetServerSidePropsContext = function (request,
|
|
|
111
121
|
});
|
|
112
122
|
return {
|
|
113
123
|
get: function (name) {
|
|
114
|
-
var value = cookiesMap[name];
|
|
124
|
+
var value = cookiesMap[ensureEncodedForJSCookie(name)];
|
|
115
125
|
return value
|
|
116
126
|
? {
|
|
117
127
|
name: name,
|
|
@@ -123,19 +133,19 @@ var createCookieStorageAdapterFromGetServerSidePropsContext = function (request,
|
|
|
123
133
|
return allCookies;
|
|
124
134
|
},
|
|
125
135
|
set: function (name, value, options) {
|
|
126
|
-
response.setHeader('Set-Cookie', "".concat(name, "=").concat(value, ";").concat(options ? serializeSetCookieOptions(options) : ''));
|
|
136
|
+
response.setHeader('Set-Cookie', "".concat(ensureEncodedForJSCookie(name), "=").concat(value, ";").concat(options ? serializeSetCookieOptions(options) : ''));
|
|
127
137
|
},
|
|
128
138
|
delete: function (name) {
|
|
129
|
-
response.setHeader('Set-Cookie', "".concat(name, "=;Expires=").concat(exports.DATE_IN_THE_PAST.toUTCString()));
|
|
139
|
+
response.setHeader('Set-Cookie', "".concat(ensureEncodedForJSCookie(name), "=;Expires=").concat(exports.DATE_IN_THE_PAST.toUTCString()));
|
|
130
140
|
},
|
|
131
141
|
};
|
|
132
142
|
};
|
|
133
143
|
var createMutableCookieStoreFromHeaders = function (headers) {
|
|
134
144
|
var setFunc = function (name, value, options) {
|
|
135
|
-
headers.append('Set-Cookie', "".concat(name, "=").concat(value, ";").concat(options ? serializeSetCookieOptions(options) : ''));
|
|
145
|
+
headers.append('Set-Cookie', "".concat(ensureEncodedForJSCookie(name), "=").concat(value, ";").concat(options ? serializeSetCookieOptions(options) : ''));
|
|
136
146
|
};
|
|
137
147
|
var deleteFunc = function (name) {
|
|
138
|
-
headers.append('Set-Cookie', "".concat(name, "=;Expires=").concat(exports.DATE_IN_THE_PAST.toUTCString()));
|
|
148
|
+
headers.append('Set-Cookie', "".concat(ensureEncodedForJSCookie(name), "=;Expires=").concat(exports.DATE_IN_THE_PAST.toUTCString()));
|
|
139
149
|
};
|
|
140
150
|
return {
|
|
141
151
|
set: setFunc,
|
|
@@ -143,7 +153,7 @@ var createMutableCookieStoreFromHeaders = function (headers) {
|
|
|
143
153
|
};
|
|
144
154
|
};
|
|
145
155
|
var serializeSetCookieOptions = function (options) {
|
|
146
|
-
var expires = options.expires,
|
|
156
|
+
var expires = options.expires, domain = options.domain, httpOnly = options.httpOnly, sameSite = options.sameSite, secure = options.secure;
|
|
147
157
|
var serializedOptions = [];
|
|
148
158
|
if (domain) {
|
|
149
159
|
serializedOptions.push("Domain=".concat(domain));
|
|
@@ -162,4 +172,13 @@ var serializeSetCookieOptions = function (options) {
|
|
|
162
172
|
}
|
|
163
173
|
return serializedOptions.join(';');
|
|
164
174
|
};
|
|
175
|
+
// Ensures the cookie names are encoded in order to look up the cookie store
|
|
176
|
+
// that is manipulated by js-cookie on the client side.
|
|
177
|
+
// Details of the js-cookie encoding behavior see:
|
|
178
|
+
// https://github.com/js-cookie/js-cookie#encoding
|
|
179
|
+
// The implementation is borrowed from js-cookie without escaping `[()]` as
|
|
180
|
+
// we are not using those chars in the auth keys.
|
|
181
|
+
var ensureEncodedForJSCookie = function (name) {
|
|
182
|
+
return encodeURIComponent(name).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent);
|
|
183
|
+
};
|
|
165
184
|
//# sourceMappingURL=createCookieStorageAdapterFromNextServerContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCookieStorageAdapterFromNextServerContext.js","sourceRoot":"","sources":["../../src/utils/createCookieStorageAdapterFromNextServerContext.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;;;;;;;;;;;;;;AAEtC,sCAAwD;AAExD,yEAGkD;AAErC,QAAA,gBAAgB,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AAErC,IAAM,+CAA+C,GAAG,UAC9D,OAA2B;IAErB,IAAA,KACL,OAAwD,EADxC,GAAG,aAAA,EAAY,GAAG,cACsB,CAAC;IAE1D,iFAAiF;IACjF,sEAAsE;IACtE,2EAA2E;IAC3E,6EAA6E;IAC7E,kBAAkB;IAClB,IACC,GAAG;QACH,GAAG;QACH,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,iBAAiB;QACjE,OAAO,GAAG,CAAC,SAAS,KAAK,UAAU,EAClC;QACD,OAAO,uDAAuD,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzE;IAEK,IAAA,KAAwB,OAG7B,EAHO,OAAO,aAAA,EAAE,QAAQ,cAGxB,CAAC;IAEF,6EAA6E;IAC7E,oBAAoB;IACpB,+EAA+E;IAC/E,qBAAqB;IACrB,2EAA2E;IAC3E,6DAA6D;IAC7D,IAAI,OAAO,IAAI,QAAQ,EAAE;QACxB,IAAI,QAAQ,YAAY,qBAAY,EAAE;YACrC,OAAO,wDAAwD,CAC9D,OAAO,EACP,QAAQ,CACR,CAAC;SACF;aAAM;YACN,OAAO,wDAAwD,CAC9D,OAAO,EACP,QAAQ,CACR,CAAC;SACF;KACD;IAEO,IAAA,OAAO,GAAK,OAEnB,QAFc,CAEb;IAEF,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;QAClC,OAAO,yCAAyC,CAAC,OAAO,CAAC,CAAC;KAC1D;IAED,mCAAmC;IACnC,MAAM,IAAI,wCAAyB,CAAC;QACnC,OAAO,EACN,wFAAwF;KACzF,CAAC,CAAC;AACJ,CAAC,CAAC;AA1DW,QAAA,+CAA+C,mDA0D1D;AAEF,IAAM,wDAAwD,GAAG,UAChE,OAAoB,EACpB,QAAsB;IAEtB,IAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAC5C,IAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC;IAE5C,OAAO;QACN,GAAG,
|
|
1
|
+
{"version":3,"file":"createCookieStorageAdapterFromNextServerContext.js","sourceRoot":"","sources":["../../src/utils/createCookieStorageAdapterFromNextServerContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { V6Client } from '@aws-amplify/api-graphql';
|
|
2
|
+
import { NextServer } from './types';
|
|
3
|
+
export type { GraphQLResult, GraphQLReturnType, } from '@aws-amplify/api-graphql';
|
|
4
|
+
/**
|
|
5
|
+
* Generates an API client that can work with models or raw GraphQL
|
|
6
|
+
*/
|
|
7
|
+
export declare function generateServerClient<T extends Record<any, any> = never>(nextServerContext: NextServer.Context): V6Client<T>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { generateClient as internalGenerateClient } from '@aws-amplify/api-graphql/internals';
|
|
4
|
+
import { getAmplifyServerContext } from '@aws-amplify/core/internals/adapter-core';
|
|
5
|
+
import { runWithAmplifyServerContext } from './runWithAmplifyServerContext';
|
|
6
|
+
import { getAmplifyConfig } from './utils/getAmplifyConfig';
|
|
7
|
+
/**
|
|
8
|
+
* Generates an API client that can work with models or raw GraphQL
|
|
9
|
+
*/
|
|
10
|
+
export function generateServerClient(nextServerContext) {
|
|
11
|
+
// This function reference gets passed down to InternalGraphQLAPI.graphql
|
|
12
|
+
// where this._graphql is passed through as the `fn` argument
|
|
13
|
+
// causing it to always get invoked inside `runWithAmplifyServerContext`
|
|
14
|
+
var getAmplify = function (fn) {
|
|
15
|
+
return runWithAmplifyServerContext({
|
|
16
|
+
nextServerContext: nextServerContext,
|
|
17
|
+
operation: function (contextSpec) {
|
|
18
|
+
return fn(getAmplifyServerContext(contextSpec).amplify);
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
// retrieve general SSR config. This is used only for get the
|
|
23
|
+
// modelIntroSchema in generateModelsProperty
|
|
24
|
+
var config = getAmplifyConfig();
|
|
25
|
+
return internalGenerateClient({ amplify: getAmplify, config: config });
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=generateServerClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateServerClient.js","sourceRoot":"","sources":["../src/generateServerClient.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAInF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAQ5D;;GAEG;AACH,MAAM,UAAU,oBAAoB,CACnC,iBAAqC;IAErC,yEAAyE;IACzE,6DAA6D;IAC7D,wEAAwE;IACxE,IAAM,UAAU,GAAG,UAAC,EAAkC;QACrD,OAAA,2BAA2B,CAAC;YAC3B,iBAAiB,mBAAA;YACjB,SAAS,EAAE,UAAA,WAAW;gBACrB,OAAA,EAAE,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;YAAhD,CAAgD;SACjD,CAAC;IAJF,CAIE,CAAC;IAEJ,6DAA6D;IAC7D,6CAA6C;IAC7C,IAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAElC,OAAO,sBAAsB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;AAChE,CAAC"}
|
package/lib-esm/index.d.ts
CHANGED
package/lib-esm/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
export { runWithAmplifyServerContext } from './runWithAmplifyServerContext';
|
|
4
|
+
export { generateServerClient } from './generateServerClient';
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
package/lib-esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -37,7 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
import { createCookieStorageAdapterFromNextServerContext, getAmplifyConfig, } from './utils';
|
|
40
|
-
import {
|
|
40
|
+
import { sharedInMemoryStorage } from '@aws-amplify/core';
|
|
41
41
|
import { createAWSCredentialsAndIdentityIdProvider, createKeyValueStorageFromCookieStorageAdapter, createUserPoolsTokenProvider, runWithAmplifyServerContext as runWithAmplifyServerContextCore, } from 'aws-amplify/internals/adapter-core';
|
|
42
42
|
/**
|
|
43
43
|
* Runs the {@link operation} with the the context created from the {@link nextServerContext}.
|
|
@@ -97,7 +97,7 @@ export var runWithAmplifyServerContext = function (_a) {
|
|
|
97
97
|
// safe to use the singleton `MemoryKeyValueStorage` here, as the
|
|
98
98
|
// static rendering uses the same unauthenticated role cross-sever.
|
|
99
99
|
nextServerContext === null
|
|
100
|
-
?
|
|
100
|
+
? sharedInMemoryStorage
|
|
101
101
|
: createKeyValueStorageFromCookieStorageAdapter(createCookieStorageAdapterFromNextServerContext(nextServerContext));
|
|
102
102
|
credentialsProvider = createAWSCredentialsAndIdentityIdProvider(amplifyConfig.Auth, keyValueStorage);
|
|
103
103
|
tokenProvider = createUserPoolsTokenProvider(amplifyConfig.Auth, keyValueStorage);
|
|
@@ -55,16 +55,24 @@ var createCookieStorageAdapterFromNextRequestAndNextResponse = function (request
|
|
|
55
55
|
var readonlyCookieStore = request.cookies;
|
|
56
56
|
var mutableCookieStore = response.cookies;
|
|
57
57
|
return {
|
|
58
|
-
get:
|
|
58
|
+
get: function (name) {
|
|
59
|
+
return readonlyCookieStore.get(ensureEncodedForJSCookie(name));
|
|
60
|
+
},
|
|
59
61
|
getAll: readonlyCookieStore.getAll.bind(readonlyCookieStore),
|
|
60
|
-
set:
|
|
61
|
-
|
|
62
|
+
set: function (name, value, options) {
|
|
63
|
+
mutableCookieStore.set(ensureEncodedForJSCookie(name), value, options);
|
|
64
|
+
},
|
|
65
|
+
delete: function (name) {
|
|
66
|
+
mutableCookieStore.delete(ensureEncodedForJSCookie(name));
|
|
67
|
+
},
|
|
62
68
|
};
|
|
63
69
|
};
|
|
64
70
|
var createCookieStorageAdapterFromNextRequestAndHttpResponse = function (request, response) {
|
|
65
71
|
var readonlyCookieStore = request.cookies;
|
|
66
72
|
var mutableCookieStore = createMutableCookieStoreFromHeaders(response.headers);
|
|
67
|
-
return __assign({ get:
|
|
73
|
+
return __assign({ get: function (name) {
|
|
74
|
+
return readonlyCookieStore.get(ensureEncodedForJSCookie(name));
|
|
75
|
+
}, getAll: readonlyCookieStore.getAll.bind(readonlyCookieStore) }, mutableCookieStore);
|
|
68
76
|
};
|
|
69
77
|
var createCookieStorageAdapterFromNextCookies = function (cookies) {
|
|
70
78
|
var cookieStore = cookies();
|
|
@@ -75,7 +83,7 @@ var createCookieStorageAdapterFromNextCookies = function (cookies) {
|
|
|
75
83
|
// and safely ignore the error if it is thrown.
|
|
76
84
|
var setFunc = function (name, value, options) {
|
|
77
85
|
try {
|
|
78
|
-
cookieStore.set(name, value, options);
|
|
86
|
+
cookieStore.set(ensureEncodedForJSCookie(name), value, options);
|
|
79
87
|
}
|
|
80
88
|
catch (_a) {
|
|
81
89
|
// no-op
|
|
@@ -83,14 +91,16 @@ var createCookieStorageAdapterFromNextCookies = function (cookies) {
|
|
|
83
91
|
};
|
|
84
92
|
var deleteFunc = function (name) {
|
|
85
93
|
try {
|
|
86
|
-
cookieStore.delete(name);
|
|
94
|
+
cookieStore.delete(ensureEncodedForJSCookie(name));
|
|
87
95
|
}
|
|
88
96
|
catch (_a) {
|
|
89
97
|
// no-op
|
|
90
98
|
}
|
|
91
99
|
};
|
|
92
100
|
return {
|
|
93
|
-
get:
|
|
101
|
+
get: function (name) {
|
|
102
|
+
return cookieStore.get(ensureEncodedForJSCookie(name));
|
|
103
|
+
},
|
|
94
104
|
getAll: cookieStore.getAll.bind(cookieStore),
|
|
95
105
|
set: setFunc,
|
|
96
106
|
delete: deleteFunc,
|
|
@@ -107,7 +117,7 @@ var createCookieStorageAdapterFromGetServerSidePropsContext = function (request,
|
|
|
107
117
|
});
|
|
108
118
|
return {
|
|
109
119
|
get: function (name) {
|
|
110
|
-
var value = cookiesMap[name];
|
|
120
|
+
var value = cookiesMap[ensureEncodedForJSCookie(name)];
|
|
111
121
|
return value
|
|
112
122
|
? {
|
|
113
123
|
name: name,
|
|
@@ -119,19 +129,19 @@ var createCookieStorageAdapterFromGetServerSidePropsContext = function (request,
|
|
|
119
129
|
return allCookies;
|
|
120
130
|
},
|
|
121
131
|
set: function (name, value, options) {
|
|
122
|
-
response.setHeader('Set-Cookie', "".concat(name, "=").concat(value, ";").concat(options ? serializeSetCookieOptions(options) : ''));
|
|
132
|
+
response.setHeader('Set-Cookie', "".concat(ensureEncodedForJSCookie(name), "=").concat(value, ";").concat(options ? serializeSetCookieOptions(options) : ''));
|
|
123
133
|
},
|
|
124
134
|
delete: function (name) {
|
|
125
|
-
response.setHeader('Set-Cookie', "".concat(name, "=;Expires=").concat(DATE_IN_THE_PAST.toUTCString()));
|
|
135
|
+
response.setHeader('Set-Cookie', "".concat(ensureEncodedForJSCookie(name), "=;Expires=").concat(DATE_IN_THE_PAST.toUTCString()));
|
|
126
136
|
},
|
|
127
137
|
};
|
|
128
138
|
};
|
|
129
139
|
var createMutableCookieStoreFromHeaders = function (headers) {
|
|
130
140
|
var setFunc = function (name, value, options) {
|
|
131
|
-
headers.append('Set-Cookie', "".concat(name, "=").concat(value, ";").concat(options ? serializeSetCookieOptions(options) : ''));
|
|
141
|
+
headers.append('Set-Cookie', "".concat(ensureEncodedForJSCookie(name), "=").concat(value, ";").concat(options ? serializeSetCookieOptions(options) : ''));
|
|
132
142
|
};
|
|
133
143
|
var deleteFunc = function (name) {
|
|
134
|
-
headers.append('Set-Cookie', "".concat(name, "=;Expires=").concat(DATE_IN_THE_PAST.toUTCString()));
|
|
144
|
+
headers.append('Set-Cookie', "".concat(ensureEncodedForJSCookie(name), "=;Expires=").concat(DATE_IN_THE_PAST.toUTCString()));
|
|
135
145
|
};
|
|
136
146
|
return {
|
|
137
147
|
set: setFunc,
|
|
@@ -139,7 +149,7 @@ var createMutableCookieStoreFromHeaders = function (headers) {
|
|
|
139
149
|
};
|
|
140
150
|
};
|
|
141
151
|
var serializeSetCookieOptions = function (options) {
|
|
142
|
-
var expires = options.expires,
|
|
152
|
+
var expires = options.expires, domain = options.domain, httpOnly = options.httpOnly, sameSite = options.sameSite, secure = options.secure;
|
|
143
153
|
var serializedOptions = [];
|
|
144
154
|
if (domain) {
|
|
145
155
|
serializedOptions.push("Domain=".concat(domain));
|
|
@@ -158,4 +168,13 @@ var serializeSetCookieOptions = function (options) {
|
|
|
158
168
|
}
|
|
159
169
|
return serializedOptions.join(';');
|
|
160
170
|
};
|
|
171
|
+
// Ensures the cookie names are encoded in order to look up the cookie store
|
|
172
|
+
// that is manipulated by js-cookie on the client side.
|
|
173
|
+
// Details of the js-cookie encoding behavior see:
|
|
174
|
+
// https://github.com/js-cookie/js-cookie#encoding
|
|
175
|
+
// The implementation is borrowed from js-cookie without escaping `[()]` as
|
|
176
|
+
// we are not using those chars in the auth keys.
|
|
177
|
+
var ensureEncodedForJSCookie = function (name) {
|
|
178
|
+
return encodeURIComponent(name).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent);
|
|
179
|
+
};
|
|
161
180
|
//# sourceMappingURL=createCookieStorageAdapterFromNextServerContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCookieStorageAdapterFromNextServerContext.js","sourceRoot":"","sources":["../../src/utils/createCookieStorageAdapterFromNextServerContext.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;;;;;;;;;;;;AAEtC,OAAO,EAAe,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EACN,yBAAyB,GAEzB,MAAM,0CAA0C,CAAC;AAElD,MAAM,CAAC,IAAM,gBAAgB,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AAE5C,MAAM,CAAC,IAAM,+CAA+C,GAAG,UAC9D,OAA2B;IAErB,IAAA,KACL,OAAwD,EADxC,GAAG,aAAA,EAAY,GAAG,cACsB,CAAC;IAE1D,iFAAiF;IACjF,sEAAsE;IACtE,2EAA2E;IAC3E,6EAA6E;IAC7E,kBAAkB;IAClB,IACC,GAAG;QACH,GAAG;QACH,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,iBAAiB;QACjE,OAAO,GAAG,CAAC,SAAS,KAAK,UAAU,EAClC;QACD,OAAO,uDAAuD,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzE;IAEK,IAAA,KAAwB,OAG7B,EAHO,OAAO,aAAA,EAAE,QAAQ,cAGxB,CAAC;IAEF,6EAA6E;IAC7E,oBAAoB;IACpB,+EAA+E;IAC/E,qBAAqB;IACrB,2EAA2E;IAC3E,6DAA6D;IAC7D,IAAI,OAAO,IAAI,QAAQ,EAAE;QACxB,IAAI,QAAQ,YAAY,YAAY,EAAE;YACrC,OAAO,wDAAwD,CAC9D,OAAO,EACP,QAAQ,CACR,CAAC;SACF;aAAM;YACN,OAAO,wDAAwD,CAC9D,OAAO,EACP,QAAQ,CACR,CAAC;SACF;KACD;IAEO,IAAA,OAAO,GAAK,OAEnB,QAFc,CAEb;IAEF,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;QAClC,OAAO,yCAAyC,CAAC,OAAO,CAAC,CAAC;KAC1D;IAED,mCAAmC;IACnC,MAAM,IAAI,yBAAyB,CAAC;QACnC,OAAO,EACN,wFAAwF;KACzF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,IAAM,wDAAwD,GAAG,UAChE,OAAoB,EACpB,QAAsB;IAEtB,IAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAC5C,IAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC;IAE5C,OAAO;QACN,GAAG,
|
|
1
|
+
{"version":3,"file":"createCookieStorageAdapterFromNextServerContext.js","sourceRoot":"","sources":["../../src/utils/createCookieStorageAdapterFromNextServerContext.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,112 +1,112 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
2
|
+
"author": "Amazon Web Services",
|
|
3
|
+
"name": "@aws-amplify/adapter-nextjs",
|
|
4
|
+
"description": "The adapter for the supporting of using Amplify APIs in Next.js.",
|
|
5
|
+
"peerDependencies": {
|
|
6
|
+
"aws-amplify": "6.0.1-server-generate-client.1e317a1.0+1e317a1",
|
|
7
|
+
"next": ">=13.4.0 <14.0.0"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"cookie": "0.5.0",
|
|
11
|
+
"server-only": "^0.0.1"
|
|
12
|
+
},
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"@types/cookie": "0.5.1",
|
|
15
|
+
"@types/node": "^20.3.1",
|
|
16
|
+
"@types/react": "^18.2.13",
|
|
17
|
+
"@types/react-dom": "^18.2.6",
|
|
18
|
+
"aws-amplify": "6.0.1-server-generate-client.1e317a1.0+1e317a1",
|
|
19
|
+
"jest-fetch-mock": "3.0.3",
|
|
20
|
+
"next": ">= 13.4.0 < 14.0.0",
|
|
21
|
+
"typescript": "5.1.6"
|
|
22
|
+
},
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"bugs": {
|
|
27
|
+
"url": "https://github.com/aws/aws-amplify/issues"
|
|
28
|
+
},
|
|
29
|
+
"exports": {
|
|
30
|
+
".": {
|
|
31
|
+
"types": "./lib-esm/index.d.ts",
|
|
32
|
+
"import": "./lib-esm/index.js",
|
|
33
|
+
"require": "./lib/index.js"
|
|
34
|
+
},
|
|
35
|
+
"./with-amplify": {
|
|
36
|
+
"types": "./lib-esm/withAmplify.d.ts",
|
|
37
|
+
"import": "./lib-esm/withAmplify.js",
|
|
38
|
+
"require": "./lib/withAmplify.js"
|
|
39
|
+
},
|
|
40
|
+
"./package.json": "./package.json"
|
|
41
|
+
},
|
|
42
|
+
"files": [
|
|
43
|
+
"lib",
|
|
44
|
+
"lib-esm",
|
|
45
|
+
"src",
|
|
46
|
+
"with-amplify"
|
|
47
|
+
],
|
|
48
|
+
"homepage": "https://aws-amplify.github.io/",
|
|
49
|
+
"jest": {
|
|
50
|
+
"coveragePathIgnorePatterns": [
|
|
51
|
+
"/node_modules/",
|
|
52
|
+
"dist",
|
|
53
|
+
"lib",
|
|
54
|
+
"lib-esm"
|
|
55
|
+
],
|
|
56
|
+
"coverageThreshold": {
|
|
57
|
+
"global": {
|
|
58
|
+
"branches": 80,
|
|
59
|
+
"functions": 80,
|
|
60
|
+
"lines": 80,
|
|
61
|
+
"statements": 80
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"globals": {
|
|
65
|
+
"ts-jest": {
|
|
66
|
+
"diagnostics": {
|
|
67
|
+
"pathRegex": "(/__tests__/.*|\\.(test|spec))\\.(tsx?|jsx?)$"
|
|
68
|
+
},
|
|
69
|
+
"tsConfig": false
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"moduleFileExtensions": [
|
|
73
|
+
"ts",
|
|
74
|
+
"tsx",
|
|
75
|
+
"js",
|
|
76
|
+
"json",
|
|
77
|
+
"jsx"
|
|
78
|
+
],
|
|
79
|
+
"testEnvironment": "node",
|
|
80
|
+
"testPathIgnorePatterns": [
|
|
81
|
+
"xmlParser-fixture.ts",
|
|
82
|
+
"testUtils",
|
|
83
|
+
"cases"
|
|
84
|
+
],
|
|
85
|
+
"testRegex": "(/__tests__/.*|\\.(test|spec))\\.(tsx?|jsx?)$",
|
|
86
|
+
"testURL": "http://localhost/",
|
|
87
|
+
"transform": {
|
|
88
|
+
"^.+\\.(js|jsx|ts|tsx)$": "ts-jest"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"license": "Apache-2.0",
|
|
92
|
+
"main": "./lib/index.js",
|
|
93
|
+
"module": "./lib-esm/index.js",
|
|
94
|
+
"sideEffects": false,
|
|
95
|
+
"scripts": {
|
|
96
|
+
"build": "npm run clean && npm run build:esm && npm run build:cjs",
|
|
97
|
+
"build-with-test": "npm test && npm run build",
|
|
98
|
+
"build:cjs": "rimraf lib && tsc -m commonjs --outDir lib",
|
|
99
|
+
"build:cjs:watch": "rimraf lib && tsc -m commonjs --outDir lib --watch",
|
|
100
|
+
"build:esm": "rimraf lib-esm && tsc -m esnext --outDir lib-esm",
|
|
101
|
+
"build:esm:watch": "rimraf lib-esm && tsc -m esnext --outDir lib-esm --watch",
|
|
102
|
+
"clean": "npm run clean:size && rimraf lib-esm lib",
|
|
103
|
+
"clean:size": "rimraf dual-publish-tmp tmp*",
|
|
104
|
+
"format": "echo \"Not implemented\"",
|
|
105
|
+
"lint": "tslint 'src/**/*.ts' && npm run ts-coverage",
|
|
106
|
+
"test": "npm run lint && jest -w 1 --coverage",
|
|
107
|
+
"ts-coverage": "typescript-coverage-report -p ./tsconfig.build.json -t 90.31"
|
|
108
|
+
},
|
|
109
|
+
"typings": "./lib-esm/index.d.ts",
|
|
110
|
+
"version": "0.0.2-server-generate-client.1e317a1.0+1e317a1",
|
|
111
|
+
"gitHead": "1e317a10a7a7e980919b0d78e397bcff1461fec5"
|
|
112
112
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { generateClient as internalGenerateClient } from '@aws-amplify/api-graphql/internals';
|
|
5
|
+
import { getAmplifyServerContext } from '@aws-amplify/core/internals/adapter-core';
|
|
6
|
+
|
|
7
|
+
import { V6Client } from '@aws-amplify/api-graphql';
|
|
8
|
+
|
|
9
|
+
import { runWithAmplifyServerContext } from './runWithAmplifyServerContext';
|
|
10
|
+
import { getAmplifyConfig } from './utils/getAmplifyConfig';
|
|
11
|
+
import { NextServer } from './types';
|
|
12
|
+
|
|
13
|
+
export type {
|
|
14
|
+
GraphQLResult,
|
|
15
|
+
GraphQLReturnType,
|
|
16
|
+
} from '@aws-amplify/api-graphql';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Generates an API client that can work with models or raw GraphQL
|
|
20
|
+
*/
|
|
21
|
+
export function generateServerClient<T extends Record<any, any> = never>(
|
|
22
|
+
nextServerContext: NextServer.Context
|
|
23
|
+
): V6Client<T> {
|
|
24
|
+
// This function reference gets passed down to InternalGraphQLAPI.graphql
|
|
25
|
+
// where this._graphql is passed through as the `fn` argument
|
|
26
|
+
// causing it to always get invoked inside `runWithAmplifyServerContext`
|
|
27
|
+
const getAmplify = (fn: (amplify: any) => Promise<any>) =>
|
|
28
|
+
runWithAmplifyServerContext({
|
|
29
|
+
nextServerContext,
|
|
30
|
+
operation: contextSpec =>
|
|
31
|
+
fn(getAmplifyServerContext(contextSpec).amplify),
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
// retrieve general SSR config. This is used only for get the
|
|
35
|
+
// modelIntroSchema in generateModelsProperty
|
|
36
|
+
const config = getAmplifyConfig();
|
|
37
|
+
|
|
38
|
+
return internalGenerateClient({ amplify: getAmplify, config });
|
|
39
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
createCookieStorageAdapterFromNextServerContext,
|
|
7
7
|
getAmplifyConfig,
|
|
8
8
|
} from './utils';
|
|
9
|
-
import {
|
|
9
|
+
import { sharedInMemoryStorage } from '@aws-amplify/core';
|
|
10
10
|
import {
|
|
11
11
|
createAWSCredentialsAndIdentityIdProvider,
|
|
12
12
|
createKeyValueStorageFromCookieStorageAdapter,
|
|
@@ -75,7 +75,7 @@ export const runWithAmplifyServerContext: NextServer.RunOperationWithContext =
|
|
|
75
75
|
// safe to use the singleton `MemoryKeyValueStorage` here, as the
|
|
76
76
|
// static rendering uses the same unauthenticated role cross-sever.
|
|
77
77
|
nextServerContext === null
|
|
78
|
-
?
|
|
78
|
+
? sharedInMemoryStorage
|
|
79
79
|
: createKeyValueStorageFromCookieStorageAdapter(
|
|
80
80
|
createCookieStorageAdapterFromNextServerContext(nextServerContext)
|
|
81
81
|
);
|
|
@@ -78,10 +78,16 @@ const createCookieStorageAdapterFromNextRequestAndNextResponse = (
|
|
|
78
78
|
const mutableCookieStore = response.cookies;
|
|
79
79
|
|
|
80
80
|
return {
|
|
81
|
-
get
|
|
81
|
+
get(name) {
|
|
82
|
+
return readonlyCookieStore.get(ensureEncodedForJSCookie(name));
|
|
83
|
+
},
|
|
82
84
|
getAll: readonlyCookieStore.getAll.bind(readonlyCookieStore),
|
|
83
|
-
set
|
|
84
|
-
|
|
85
|
+
set(name, value, options) {
|
|
86
|
+
mutableCookieStore.set(ensureEncodedForJSCookie(name), value, options);
|
|
87
|
+
},
|
|
88
|
+
delete(name) {
|
|
89
|
+
mutableCookieStore.delete(ensureEncodedForJSCookie(name));
|
|
90
|
+
},
|
|
85
91
|
};
|
|
86
92
|
};
|
|
87
93
|
|
|
@@ -95,7 +101,9 @@ const createCookieStorageAdapterFromNextRequestAndHttpResponse = (
|
|
|
95
101
|
);
|
|
96
102
|
|
|
97
103
|
return {
|
|
98
|
-
get
|
|
104
|
+
get(name) {
|
|
105
|
+
return readonlyCookieStore.get(ensureEncodedForJSCookie(name));
|
|
106
|
+
},
|
|
99
107
|
getAll: readonlyCookieStore.getAll.bind(readonlyCookieStore),
|
|
100
108
|
...mutableCookieStore,
|
|
101
109
|
};
|
|
@@ -113,7 +121,7 @@ const createCookieStorageAdapterFromNextCookies = (
|
|
|
113
121
|
// and safely ignore the error if it is thrown.
|
|
114
122
|
const setFunc: CookieStorage.Adapter['set'] = (name, value, options) => {
|
|
115
123
|
try {
|
|
116
|
-
cookieStore.set(name, value, options);
|
|
124
|
+
cookieStore.set(ensureEncodedForJSCookie(name), value, options);
|
|
117
125
|
} catch {
|
|
118
126
|
// no-op
|
|
119
127
|
}
|
|
@@ -121,14 +129,16 @@ const createCookieStorageAdapterFromNextCookies = (
|
|
|
121
129
|
|
|
122
130
|
const deleteFunc: CookieStorage.Adapter['delete'] = name => {
|
|
123
131
|
try {
|
|
124
|
-
cookieStore.delete(name);
|
|
132
|
+
cookieStore.delete(ensureEncodedForJSCookie(name));
|
|
125
133
|
} catch {
|
|
126
134
|
// no-op
|
|
127
135
|
}
|
|
128
136
|
};
|
|
129
137
|
|
|
130
138
|
return {
|
|
131
|
-
get
|
|
139
|
+
get(name) {
|
|
140
|
+
return cookieStore.get(ensureEncodedForJSCookie(name));
|
|
141
|
+
},
|
|
132
142
|
getAll: cookieStore.getAll.bind(cookieStore),
|
|
133
143
|
set: setFunc,
|
|
134
144
|
delete: deleteFunc,
|
|
@@ -147,7 +157,7 @@ const createCookieStorageAdapterFromGetServerSidePropsContext = (
|
|
|
147
157
|
|
|
148
158
|
return {
|
|
149
159
|
get(name) {
|
|
150
|
-
const value = cookiesMap[name];
|
|
160
|
+
const value = cookiesMap[ensureEncodedForJSCookie(name)];
|
|
151
161
|
return value
|
|
152
162
|
? {
|
|
153
163
|
name,
|
|
@@ -161,13 +171,17 @@ const createCookieStorageAdapterFromGetServerSidePropsContext = (
|
|
|
161
171
|
set(name, value, options) {
|
|
162
172
|
response.setHeader(
|
|
163
173
|
'Set-Cookie',
|
|
164
|
-
`${name}=${value};${
|
|
174
|
+
`${ensureEncodedForJSCookie(name)}=${value};${
|
|
175
|
+
options ? serializeSetCookieOptions(options) : ''
|
|
176
|
+
}`
|
|
165
177
|
);
|
|
166
178
|
},
|
|
167
179
|
delete(name) {
|
|
168
180
|
response.setHeader(
|
|
169
181
|
'Set-Cookie',
|
|
170
|
-
`${
|
|
182
|
+
`${ensureEncodedForJSCookie(
|
|
183
|
+
name
|
|
184
|
+
)}=;Expires=${DATE_IN_THE_PAST.toUTCString()}`
|
|
171
185
|
);
|
|
172
186
|
},
|
|
173
187
|
};
|
|
@@ -179,13 +193,17 @@ const createMutableCookieStoreFromHeaders = (
|
|
|
179
193
|
const setFunc: CookieStorage.Adapter['set'] = (name, value, options) => {
|
|
180
194
|
headers.append(
|
|
181
195
|
'Set-Cookie',
|
|
182
|
-
`${name}=${value};${
|
|
196
|
+
`${ensureEncodedForJSCookie(name)}=${value};${
|
|
197
|
+
options ? serializeSetCookieOptions(options) : ''
|
|
198
|
+
}`
|
|
183
199
|
);
|
|
184
200
|
};
|
|
185
201
|
const deleteFunc: CookieStorage.Adapter['delete'] = name => {
|
|
186
202
|
headers.append(
|
|
187
203
|
'Set-Cookie',
|
|
188
|
-
`${
|
|
204
|
+
`${ensureEncodedForJSCookie(
|
|
205
|
+
name
|
|
206
|
+
)}=;Expires=${DATE_IN_THE_PAST.toUTCString()}`
|
|
189
207
|
);
|
|
190
208
|
};
|
|
191
209
|
return {
|
|
@@ -197,7 +215,7 @@ const createMutableCookieStoreFromHeaders = (
|
|
|
197
215
|
const serializeSetCookieOptions = (
|
|
198
216
|
options: CookieStorage.SetCookieOptions
|
|
199
217
|
): string => {
|
|
200
|
-
const { expires,
|
|
218
|
+
const { expires, domain, httpOnly, sameSite, secure } = options;
|
|
201
219
|
const serializedOptions: string[] = [];
|
|
202
220
|
if (domain) {
|
|
203
221
|
serializedOptions.push(`Domain=${domain}`);
|
|
@@ -216,3 +234,12 @@ const serializeSetCookieOptions = (
|
|
|
216
234
|
}
|
|
217
235
|
return serializedOptions.join(';');
|
|
218
236
|
};
|
|
237
|
+
|
|
238
|
+
// Ensures the cookie names are encoded in order to look up the cookie store
|
|
239
|
+
// that is manipulated by js-cookie on the client side.
|
|
240
|
+
// Details of the js-cookie encoding behavior see:
|
|
241
|
+
// https://github.com/js-cookie/js-cookie#encoding
|
|
242
|
+
// The implementation is borrowed from js-cookie without escaping `[()]` as
|
|
243
|
+
// we are not using those chars in the auth keys.
|
|
244
|
+
const ensureEncodedForJSCookie = (name: string): string =>
|
|
245
|
+
encodeURIComponent(name).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent);
|