@shopify/shopify-app-remix 2.4.0 → 2.5.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/README.md +44 -0
- package/build/cjs/server/authenticate/admin/authenticate.js +2 -0
- package/build/cjs/server/authenticate/admin/billing/check.js +39 -0
- package/build/cjs/server/authenticate/flow/authenticate.js +68 -0
- package/build/cjs/server/errors.js +9 -0
- package/build/cjs/server/index.js +2 -0
- package/build/cjs/server/shopify-app.js +8 -8
- package/build/cjs/server/types.js +4 -0
- package/build/cjs/server/unauthenticated/admin/factory.js +2 -2
- package/build/cjs/server/unauthenticated/storefront/factory.js +2 -2
- package/build/cjs/server/version.js +1 -1
- package/build/ts/server/__test-helpers/request-mock.js.map +1 -1
- package/build/ts/server/authenticate/admin/authenticate.d.ts.map +1 -1
- package/build/ts/server/authenticate/admin/authenticate.js +1 -0
- package/build/ts/server/authenticate/admin/authenticate.js.map +1 -1
- package/build/ts/server/authenticate/admin/billing/check.d.ts +6 -0
- package/build/ts/server/authenticate/admin/billing/check.d.ts.map +1 -0
- package/build/ts/server/authenticate/admin/billing/check.js +43 -0
- package/build/ts/server/authenticate/admin/billing/check.js.map +1 -0
- package/build/ts/server/authenticate/admin/billing/index.d.ts +1 -0
- package/build/ts/server/authenticate/admin/billing/index.d.ts.map +1 -1
- package/build/ts/server/authenticate/admin/billing/index.js +3 -1
- package/build/ts/server/authenticate/admin/billing/index.js.map +1 -1
- package/build/ts/server/authenticate/admin/billing/types.d.ts +59 -1
- package/build/ts/server/authenticate/admin/billing/types.d.ts.map +1 -1
- package/build/ts/server/authenticate/admin/strategies/auth-code-flow.js.map +1 -1
- package/build/ts/server/authenticate/flow/authenticate.d.ts +5 -0
- package/build/ts/server/authenticate/flow/authenticate.d.ts.map +1 -0
- package/build/ts/server/authenticate/flow/authenticate.flow.doc.d.ts +4 -0
- package/build/ts/server/authenticate/flow/authenticate.flow.doc.d.ts.map +1 -0
- package/build/ts/server/authenticate/flow/authenticate.flow.doc.js +33 -0
- package/build/ts/server/authenticate/flow/authenticate.flow.doc.js.map +1 -0
- package/build/ts/server/authenticate/flow/authenticate.js +67 -0
- package/build/ts/server/authenticate/flow/authenticate.js.map +1 -0
- package/build/ts/server/authenticate/flow/types.d.ts +82 -0
- package/build/ts/server/authenticate/flow/types.d.ts.map +1 -0
- package/build/ts/server/authenticate/flow/types.js +3 -0
- package/build/ts/server/authenticate/flow/types.js.map +1 -0
- package/build/ts/server/authenticate/webhooks/types.d.ts.map +1 -1
- package/build/ts/server/clients/admin/types.d.ts +12 -0
- package/build/ts/server/clients/admin/types.d.ts.map +1 -1
- package/build/ts/server/clients/types.d.ts +1 -3
- package/build/ts/server/clients/types.d.ts.map +1 -1
- package/build/ts/server/config-types.d.ts +1 -3
- package/build/ts/server/config-types.d.ts.map +1 -1
- package/build/ts/server/errors.d.ts +4 -0
- package/build/ts/server/errors.d.ts.map +1 -0
- package/build/ts/server/errors.js +14 -0
- package/build/ts/server/errors.js.map +1 -0
- package/build/ts/server/future/flags.d.ts +4 -1
- package/build/ts/server/future/flags.d.ts.map +1 -1
- package/build/ts/server/index.d.ts +1 -0
- package/build/ts/server/index.d.ts.map +1 -1
- package/build/ts/server/index.js +2 -0
- package/build/ts/server/index.js.map +1 -1
- package/build/ts/server/shopify-app.d.ts.map +1 -1
- package/build/ts/server/shopify-app.doc.d.ts.map +1 -1
- package/build/ts/server/shopify-app.doc.js +1 -0
- package/build/ts/server/shopify-app.doc.js.map +1 -1
- package/build/ts/server/shopify-app.js +4 -4
- package/build/ts/server/shopify-app.js.map +1 -1
- package/build/ts/server/types.d.ts +48 -11
- package/build/ts/server/types.d.ts.map +1 -1
- package/build/ts/server/types.js.map +1 -1
- package/build/ts/server/unauthenticated/admin/factory.d.ts.map +1 -1
- package/build/ts/server/unauthenticated/admin/factory.js +2 -2
- package/build/ts/server/unauthenticated/admin/factory.js.map +1 -1
- package/build/ts/server/unauthenticated/admin/types.d.ts +76 -0
- package/build/ts/server/unauthenticated/admin/types.d.ts.map +1 -1
- package/build/ts/server/unauthenticated/admin/unauthenticated.admin.doc.d.ts.map +1 -1
- package/build/ts/server/unauthenticated/admin/unauthenticated.admin.doc.js +2 -5
- package/build/ts/server/unauthenticated/admin/unauthenticated.admin.doc.js.map +1 -1
- package/build/ts/server/unauthenticated/storefront/factory.d.ts.map +1 -1
- package/build/ts/server/unauthenticated/storefront/factory.js +2 -2
- package/build/ts/server/unauthenticated/storefront/factory.js.map +1 -1
- package/build/ts/server/unauthenticated/storefront/unauthenticated.storefront.doc.d.ts.map +1 -1
- package/build/ts/server/unauthenticated/storefront/unauthenticated.storefront.doc.js +1 -4
- package/build/ts/server/unauthenticated/storefront/unauthenticated.storefront.doc.js.map +1 -1
- package/build/ts/server/version.d.ts +1 -1
- package/build/ts/server/version.js +1 -1
- package/package.json +9 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate.flow.doc.d.ts","sourceRoot":"","sources":["../../../../../src/server/authenticate/flow/authenticate.flow.doc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAC,MAAM,wBAAwB,CAAC;AAErE,QAAA,MAAM,IAAI,EAAE,6BA6BX,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var data = {
|
|
4
|
+
name: 'Flow',
|
|
5
|
+
description: 'Contains functions for verifying Shopify Flow extensions.' +
|
|
6
|
+
'\n\nSee the [Flow documentation](https://shopify.dev/docs/apps/flow/actions/endpoints) for more information.',
|
|
7
|
+
category: 'Authenticate',
|
|
8
|
+
type: 'object',
|
|
9
|
+
isVisualComponent: false,
|
|
10
|
+
definitions: [
|
|
11
|
+
{
|
|
12
|
+
title: 'authenticate.flow',
|
|
13
|
+
description: 'Verifies requests coming from Shopify Flow extensions.',
|
|
14
|
+
type: 'AuthenticateFlow',
|
|
15
|
+
},
|
|
16
|
+
],
|
|
17
|
+
jsDocTypeExamples: ['FlowContext'],
|
|
18
|
+
related: [
|
|
19
|
+
{
|
|
20
|
+
name: 'Admin API context',
|
|
21
|
+
subtitle: 'Interact with the Admin API.',
|
|
22
|
+
url: '/docs/api/shopify-app-remix/apis/admin-api',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'Flow action endpoints',
|
|
26
|
+
subtitle: 'Receive requests from Flow.',
|
|
27
|
+
url: '/docs/apps/flow/actions/endpoints',
|
|
28
|
+
type: 'shopify',
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
};
|
|
32
|
+
exports.default = data;
|
|
33
|
+
//# sourceMappingURL=authenticate.flow.doc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate.flow.doc.js","sourceRoot":"","sources":["../../../../../src/server/authenticate/flow/authenticate.flow.doc.ts"],"names":[],"mappings":";;AAEA,IAAM,IAAI,GAAkC;IAC1C,IAAI,EAAE,MAAM;IACZ,WAAW,EACT,2DAA2D;QAC3D,8GAA8G;IAChH,QAAQ,EAAE,cAAc;IACxB,IAAI,EAAE,QAAQ;IACd,iBAAiB,EAAE,KAAK;IACxB,WAAW,EAAE;QACX;YACE,KAAK,EAAE,mBAAmB;YAC1B,WAAW,EAAE,wDAAwD;YACrE,IAAI,EAAE,kBAAkB;SACzB;KACF;IACD,iBAAiB,EAAE,CAAC,aAAa,CAAC;IAClC,OAAO,EAAE;QACP;YACE,IAAI,EAAE,mBAAmB;YACzB,QAAQ,EAAE,8BAA8B;YACxC,GAAG,EAAE,4CAA4C;SAClD;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,QAAQ,EAAE,6BAA6B;YACvC,GAAG,EAAE,mCAAmC;YACxC,IAAI,EAAE,SAAS;SAChB;KACF;CACF,CAAC;AAEF,kBAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.authenticateFlowFactory = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var admin_1 = require("../../clients/admin");
|
|
6
|
+
function authenticateFlowFactory(params) {
|
|
7
|
+
var api = params.api, config = params.config, logger = params.logger;
|
|
8
|
+
return function authenticate(request) {
|
|
9
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
10
|
+
var rawBody, result, payload, sessionId, session;
|
|
11
|
+
return tslib_1.__generator(this, function (_a) {
|
|
12
|
+
switch (_a.label) {
|
|
13
|
+
case 0:
|
|
14
|
+
logger.info('Authenticating flow request');
|
|
15
|
+
if (request.method !== 'POST') {
|
|
16
|
+
logger.debug('Received a non-POST request for flow. Only POST requests are allowed.', { url: request.url, method: request.method });
|
|
17
|
+
throw new Response(undefined, {
|
|
18
|
+
status: 405,
|
|
19
|
+
statusText: 'Method not allowed',
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return [4 /*yield*/, request.text()];
|
|
23
|
+
case 1:
|
|
24
|
+
rawBody = _a.sent();
|
|
25
|
+
return [4 /*yield*/, api.flow.validate({
|
|
26
|
+
rawBody: rawBody,
|
|
27
|
+
rawRequest: request,
|
|
28
|
+
})];
|
|
29
|
+
case 2:
|
|
30
|
+
result = _a.sent();
|
|
31
|
+
if (!result.valid) {
|
|
32
|
+
logger.error('Received an invalid flow request', { reason: result.reason });
|
|
33
|
+
throw new Response(undefined, {
|
|
34
|
+
status: 400,
|
|
35
|
+
statusText: 'Bad Request',
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
payload = JSON.parse(rawBody);
|
|
39
|
+
logger.debug('Flow request is valid, looking for an offline session', {
|
|
40
|
+
shop: payload.shopify_domain,
|
|
41
|
+
});
|
|
42
|
+
sessionId = api.session.getOfflineId(payload.shopify_domain);
|
|
43
|
+
return [4 /*yield*/, config.sessionStorage.loadSession(sessionId)];
|
|
44
|
+
case 3:
|
|
45
|
+
session = _a.sent();
|
|
46
|
+
if (!session) {
|
|
47
|
+
logger.info('Flow request could not find session', {
|
|
48
|
+
shop: payload.shopify_domain,
|
|
49
|
+
});
|
|
50
|
+
throw new Response(undefined, {
|
|
51
|
+
status: 400,
|
|
52
|
+
statusText: 'Bad Request',
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
logger.debug('Found a session for the flow request', { shop: session.shop });
|
|
56
|
+
return [2 /*return*/, {
|
|
57
|
+
session: session,
|
|
58
|
+
payload: payload,
|
|
59
|
+
admin: (0, admin_1.adminClientFactory)({ params: params, session: session }),
|
|
60
|
+
}];
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
exports.authenticateFlowFactory = authenticateFlowFactory;
|
|
67
|
+
//# sourceMappingURL=authenticate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../../../../../src/server/authenticate/flow/authenticate.ts"],"names":[],"mappings":";;;;AAEA,6CAAuD;AAKvD,SAAgB,uBAAuB,CAErC,MAAmB;IACZ,IAAA,GAAG,GAAoB,MAAM,IAA1B,EAAE,MAAM,GAAY,MAAM,OAAlB,EAAE,MAAM,GAAI,MAAM,OAAV,CAAW;IAErC,OAAO,SAAe,YAAY,CAChC,OAAgB;;;;;;wBAEhB,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;wBAE3C,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;4BAC9B,MAAM,CAAC,KAAK,CACV,uEAAuE,EACvE,EAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,CAC3C,CAAC;4BACF,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE;gCAC5B,MAAM,EAAE,GAAG;gCACX,UAAU,EAAE,oBAAoB;6BACjC,CAAC,CAAC;wBACL,CAAC;wBAEe,qBAAM,OAAO,CAAC,IAAI,EAAE,EAAA;;wBAA9B,OAAO,GAAG,SAAoB;wBACrB,qBAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;gCACrC,OAAO,SAAA;gCACP,UAAU,EAAE,OAAO;6BACpB,CAAC,EAAA;;wBAHI,MAAM,GAAG,SAGb;wBAEF,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;4BAClB,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAC,CAAC,CAAC;4BAE1E,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE;gCAC5B,MAAM,EAAE,GAAG;gCACX,UAAU,EAAE,aAAa;6BAC1B,CAAC,CAAC;wBACL,CAAC;wBAEK,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAEpC,MAAM,CAAC,KAAK,CAAC,uDAAuD,EAAE;4BACpE,IAAI,EAAE,OAAO,CAAC,cAAc;yBAC7B,CAAC,CAAC;wBAEG,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;wBACnD,qBAAM,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,EAAA;;wBAA5D,OAAO,GAAG,SAAkD;wBAElE,IAAI,CAAC,OAAO,EAAE,CAAC;4BACb,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE;gCACjD,IAAI,EAAE,OAAO,CAAC,cAAc;6BAC7B,CAAC,CAAC;4BACH,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE;gCAC5B,MAAM,EAAE,GAAG;gCACX,UAAU,EAAE,aAAa;6BAC1B,CAAC,CAAC;wBACL,CAAC;wBAED,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAC,CAAC,CAAC;wBAE3E,sBAAO;gCACL,OAAO,SAAA;gCACP,OAAO,SAAA;gCACP,KAAK,EAAE,IAAA,0BAAkB,EAAY,EAAC,MAAM,QAAA,EAAE,OAAO,SAAA,EAAC,CAAC;6BACxD,EAAC;;;;KACH,CAAC;AACJ,CAAC;AA/DD,0DA+DC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Session, ShopifyRestResources } from '@shopify/shopify-api';
|
|
2
|
+
import type { AdminApiContext } from '../../clients';
|
|
3
|
+
export interface FlowContext<Resources extends ShopifyRestResources = ShopifyRestResources> {
|
|
4
|
+
/**
|
|
5
|
+
* A session with an offline token for the shop.
|
|
6
|
+
*
|
|
7
|
+
* Returned only if there is a session for the shop.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* <caption>Shopify session for the Flow request.</caption>
|
|
11
|
+
* <description>Use the session associated with this request to use REST resources.</description>
|
|
12
|
+
* ```ts
|
|
13
|
+
* // /app/routes/flow.tsx
|
|
14
|
+
* import { ActionFunction } from "@remix-run/node";
|
|
15
|
+
* import { authenticate } from "../shopify.server";
|
|
16
|
+
*
|
|
17
|
+
* export const action: ActionFunction = async ({ request }) => {
|
|
18
|
+
* const { session, admin } = await authenticate.flow(request);
|
|
19
|
+
*
|
|
20
|
+
* const products = await admin?.rest.resources.Product.all({ session });
|
|
21
|
+
* // Use products
|
|
22
|
+
*
|
|
23
|
+
* return new Response();
|
|
24
|
+
* };
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
session: Session;
|
|
28
|
+
/**
|
|
29
|
+
* The payload from the Flow request.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* <caption>Flow payload.</caption>
|
|
33
|
+
* <description>Get the request's POST payload.</description>
|
|
34
|
+
* ```ts
|
|
35
|
+
* // /app/routes/flow.tsx
|
|
36
|
+
* import { ActionFunction } from "@remix-run/node";
|
|
37
|
+
* import { authenticate } from "../shopify.server";
|
|
38
|
+
*
|
|
39
|
+
* export const action: ActionFunction = async ({ request }) => {
|
|
40
|
+
* const { payload } = await authenticate.flow(request);
|
|
41
|
+
* return new Response();
|
|
42
|
+
* };
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
payload: any;
|
|
46
|
+
/**
|
|
47
|
+
* An admin context for the Flow request.
|
|
48
|
+
*
|
|
49
|
+
* Returned only if there is a session for the shop.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* <caption>Flow admin context.</caption>
|
|
53
|
+
* <description>Use the `admin` object in the context to interact with the Admin API.</description>
|
|
54
|
+
* ```ts
|
|
55
|
+
* // /app/routes/flow.tsx
|
|
56
|
+
* import { ActionFunctionArgs } from "@remix-run/node";
|
|
57
|
+
* import { authenticate } from "../shopify.server";
|
|
58
|
+
*
|
|
59
|
+
* export async function action({ request }: ActionFunctionArgs) {
|
|
60
|
+
* const { admin } = await authenticate.flow(request);
|
|
61
|
+
*
|
|
62
|
+
* const response = await admin?.graphql(
|
|
63
|
+
* `#graphql
|
|
64
|
+
* mutation populateProduct($input: ProductInput!) {
|
|
65
|
+
* productCreate(input: $input) {
|
|
66
|
+
* product {
|
|
67
|
+
* id
|
|
68
|
+
* }
|
|
69
|
+
* }
|
|
70
|
+
* }`,
|
|
71
|
+
* { variables: { input: { title: "Product Name" } } }
|
|
72
|
+
* );
|
|
73
|
+
*
|
|
74
|
+
* const productData = await response.json();
|
|
75
|
+
* return json({ data: productData.data });
|
|
76
|
+
* }
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
admin: AdminApiContext<Resources>;
|
|
80
|
+
}
|
|
81
|
+
export type AuthenticateFlow<Resources extends ShopifyRestResources = ShopifyRestResources> = (request: Request) => Promise<FlowContext<Resources>>;
|
|
82
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/server/authenticate/flow/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAEnD,MAAM,WAAW,WAAW,CAC1B,SAAS,SAAS,oBAAoB,GAAG,oBAAoB;IAE7D;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,EAAE,GAAG,CAAC;IAEb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,gBAAgB,CAC1B,SAAS,SAAS,oBAAoB,GAAG,oBAAoB,IAC3D,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/server/authenticate/flow/types.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/server/authenticate/webhooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAE5E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAC,cAAc,EAAE,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAE1E,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;IACjD;;;;;;;;;;;;;;;;OAgBG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAC7E,SAAQ,OAAO,CAAC,MAAM,CAAC;IACvB,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B,CAC3C,SAAS,SAAS,oBAAoB;IAEtC,qBAAqB;IACrB,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC3D,wBAAwB;IACxB,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;CACtD;AAED,MAAM,MAAM,mBAAmB,CAC7B,MAAM,SAAS,iBAAiB,EAChC,SAAS,SAAS,oBAAoB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/server/authenticate/webhooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAE5E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAC,cAAc,EAAE,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAE1E,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;IACjD;;;;;;;;;;;;;;;;OAgBG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAC7E,SAAQ,OAAO,CAAC,MAAM,CAAC;IACvB,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B,CAC3C,SAAS,SAAS,oBAAoB;IAEtC,qBAAqB;IACrB,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC3D,wBAAwB;IACxB,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;CACtD;AAED,MAAM,MAAM,mBAAmB,CAC7B,MAAM,SAAS,iBAAiB,EAChC,SAAS,SAAS,oBAAoB,IAEtC,cAAc,CAAC,MAAM,EAAE,wBAAwB,CAAC,SAAS,IAAI,GACzD,eAAe,CAAC,SAAS,CAAC,GAC1B,4BAA4B,CAAC,SAAS,CAAC,CAAC;AAE9C,MAAM,WAAW,yBAAyB,CACxC,MAAM,SAAS,iBAAiB,EAChC,SAAS,SAAS,oBAAoB,EACtC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CACjC,SAAQ,OAAO,CAAC,MAAM,CAAC;IACvB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8DG;IACH,KAAK,EAAE,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAC/C;AAED,MAAM,MAAM,cAAc,CACxB,MAAM,SAAS,iBAAiB,EAChC,SAAS,SAAS,oBAAoB,EACtC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAE/B,4BAA4B,CAAC,MAAM,CAAC,GACpC,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAEzD,MAAM,MAAM,mBAAmB,CAC7B,MAAM,SAAS,iBAAiB,EAChC,SAAS,SAAS,oBAAoB,EACtC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAC/B,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC"}
|
|
@@ -153,6 +153,18 @@ export interface AdminApiContext<Resources extends ShopifyRestResources = Shopif
|
|
|
153
153
|
* return json({ data: productData.data });
|
|
154
154
|
* }
|
|
155
155
|
* ```
|
|
156
|
+
*
|
|
157
|
+
* ```ts
|
|
158
|
+
* // /app/shopify.server.ts
|
|
159
|
+
* import { shopifyApp } from "@shopify/shopify-app-remix/server";
|
|
160
|
+
*
|
|
161
|
+
* const shopify = shopifyApp({
|
|
162
|
+
* restResources,
|
|
163
|
+
* // ...etc
|
|
164
|
+
* });
|
|
165
|
+
* export default shopify;
|
|
166
|
+
* export const unauthenticated = shopify.unauthenticated;
|
|
167
|
+
* ```
|
|
156
168
|
*/
|
|
157
169
|
graphql: GraphQLClient<AdminOperations>;
|
|
158
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/server/clients/admin/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAC,eAAe,EAAC,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AAEvC,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,QAAQ,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;CAC5C;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE;IACzC,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpB,MAAM,WAAW,eAAe,CAC9B,SAAS,SAAS,oBAAoB,GAAG,oBAAoB;IAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyGG;IACH,IAAI,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAEzC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/server/clients/admin/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAC,eAAe,EAAC,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AAEvC,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,QAAQ,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;CAC5C;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE;IACzC,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpB,MAAM,WAAW,eAAe,CAC9B,SAAS,SAAS,oBAAoB,GAAG,oBAAoB;IAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyGG;IACH,IAAI,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACH,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;CACzC"}
|
|
@@ -3,9 +3,7 @@ import { ApiVersion } from '@shopify/shopify-api';
|
|
|
3
3
|
export interface GraphQLQueryOptions<Operation extends keyof Operations, Operations extends AllOperations> {
|
|
4
4
|
variables?: ApiClientRequestOptions<Operation, Operations>['variables'];
|
|
5
5
|
apiVersion?: ApiVersion;
|
|
6
|
-
headers?:
|
|
7
|
-
[key: string]: any;
|
|
8
|
-
};
|
|
6
|
+
headers?: Record<string, any>;
|
|
9
7
|
tries?: number;
|
|
10
8
|
}
|
|
11
9
|
export type GraphQLClient<Operations extends AllOperations> = <Operation extends keyof Operations>(query: Operation, options?: GraphQLQueryOptions<Operation, Operations>) => Promise<ResponseWithType<FetchResponseBody<ReturnData<Operation, Operations>>>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/clients/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAEhD,MAAM,WAAW,mBAAmB,CAClC,SAAS,SAAS,MAAM,UAAU,EAClC,UAAU,SAAS,aAAa;IAEhC,SAAS,CAAC,EAAE,uBAAuB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC;IACxE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/clients/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAEhD,MAAM,WAAW,mBAAmB,CAClC,SAAS,SAAS,MAAM,UAAU,EAClC,UAAU,SAAS,aAAa;IAEhC,SAAS,CAAC,EAAE,uBAAuB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC;IACxE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,CAAC,UAAU,SAAS,aAAa,IAAI,CAC5D,SAAS,SAAS,MAAM,UAAU,EAElC,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,KACjD,OAAO,CACV,gBAAgB,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CACvE,CAAC"}
|
|
@@ -211,9 +211,7 @@ export interface AuthConfig {
|
|
|
211
211
|
patchSessionTokenPath: string;
|
|
212
212
|
loginPath: string;
|
|
213
213
|
}
|
|
214
|
-
export
|
|
215
|
-
[key: string]: WebhookHandler | WebhookHandler[];
|
|
216
|
-
}
|
|
214
|
+
export type WebhookConfig = Record<string, WebhookHandler | WebhookHandler[]>;
|
|
217
215
|
interface HooksConfig {
|
|
218
216
|
/**
|
|
219
217
|
* A function to call after a merchant installs your app
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-types.d.ts","sourceRoot":"","sources":["../../../src/server/config-types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,IAAI,YAAY,EAC5B,eAAe,IAAI,SAAS,EAC5B,oBAAoB,EACpB,OAAO,EACP,UAAU,EACV,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,cAAc,EAAC,MAAM,sCAAsC,CAAC;AAEpE,OAAO,KAAK,EAAC,iBAAiB,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAC,wBAAwB,EAAC,MAAM,mDAAmD,CAAC;AAE3F,MAAM,WAAW,YAAY,CAC3B,SAAS,SAAS,oBAAoB,GAAG,oBAAoB,EAC7D,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,CACpD,SAAQ,IAAI,CACV,YAAY,CAAC,SAAS,CAAC,EACrB,UAAU,GACV,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,kBAAkB,GAClB,QAAQ,CACX;IACD;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,cAAc,EAAE,OAAO,CAAC;IAExB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEzB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;OAIG;IACH,YAAY,CAAC,EAAE,eAAe,CAAC;IAE/B;;;;;;;;;;;;;;;;;OAiBG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc,CACxE,SAAQ,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;IACjC,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,wBAAwB,EAAE,wBAAwB,CAAC;CACpD;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,
|
|
1
|
+
{"version":3,"file":"config-types.d.ts","sourceRoot":"","sources":["../../../src/server/config-types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,IAAI,YAAY,EAC5B,eAAe,IAAI,SAAS,EAC5B,oBAAoB,EACpB,OAAO,EACP,UAAU,EACV,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,cAAc,EAAC,MAAM,sCAAsC,CAAC;AAEpE,OAAO,KAAK,EAAC,iBAAiB,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAC,wBAAwB,EAAC,MAAM,mDAAmD,CAAC;AAE3F,MAAM,WAAW,YAAY,CAC3B,SAAS,SAAS,oBAAoB,GAAG,oBAAoB,EAC7D,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,CACpD,SAAQ,IAAI,CACV,YAAY,CAAC,SAAS,CAAC,EACrB,UAAU,GACV,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,kBAAkB,GAClB,QAAQ,CACX;IACD;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,cAAc,EAAE,OAAO,CAAC;IAExB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEzB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;OAIG;IACH,YAAY,CAAC,EAAE,eAAe,CAAC;IAE/B;;;;;;;;;;;;;;;;;OAiBG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc,CACxE,SAAQ,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;IACjC,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,wBAAwB,EAAE,wBAAwB,CAAC;CACpD;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC,CAAC;AAE9E,UAAU,WAAW;IACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,gBAAgB,CAC/B,CAAC,SAAS,oBAAoB,GAAG,oBAAoB;IAErD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/server/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAElD,qBAAa,oBAAqB,SAAQ,YAAY;CAAG"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SessionNotFoundError = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var shopify_api_1 = require("@shopify/shopify-api");
|
|
6
|
+
var SessionNotFoundError = /** @class */ (function (_super) {
|
|
7
|
+
tslib_1.__extends(SessionNotFoundError, _super);
|
|
8
|
+
function SessionNotFoundError() {
|
|
9
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
10
|
+
}
|
|
11
|
+
return SessionNotFoundError;
|
|
12
|
+
}(shopify_api_1.ShopifyError));
|
|
13
|
+
exports.SessionNotFoundError = SessionNotFoundError;
|
|
14
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/server/errors.ts"],"names":[],"mappings":";;;;AAAA,oDAAkD;AAElD;IAA0C,gDAAY;IAAtD;;IAAwD,CAAC;IAAD,2BAAC;AAAD,CAAC,AAAzD,CAA0C,0BAAY,GAAG;AAA5C,oDAAoB"}
|
|
@@ -12,7 +12,10 @@ export interface FutureFlags {
|
|
|
12
12
|
*/
|
|
13
13
|
v3_authenticatePublic?: boolean;
|
|
14
14
|
/**
|
|
15
|
-
* When enabled, embedded apps will fetch access tokens via token exchange.
|
|
15
|
+
* When enabled, embedded apps will fetch access tokens via [token exchange](https://shopify.dev/docs/apps/auth/get-access-tokens/token-exchange).
|
|
16
|
+
* This assumes the app has scopes declared for [Shopify managing installation](https://shopify.dev/docs/apps/auth/installation#shopify-managed-installation).
|
|
17
|
+
*
|
|
18
|
+
* Learn more about this [new embedded app auth strategy](https://shopify.dev/docs/api/shopify-app-remix#embedded-auth-strategy).
|
|
16
19
|
*
|
|
17
20
|
* @default false
|
|
18
21
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../../../src/server/future/flags.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC
|
|
1
|
+
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../../../src/server/future/flags.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;;;;OAOG;IACH,gCAAgC,CAAC,EAAE,OAAO,CAAC;CAC5C;AAED,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,SAAS,CAAC;AAExD,MAAM,MAAM,cAAc,CACxB,MAAM,SAAS,iBAAiB,EAChC,IAAI,SAAS,MAAM,WAAW,IAC5B,MAAM,SAAS,WAAW,GAC1B,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,GACvB,IAAI,GACJ,KAAK,GACP,KAAK,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,uCAAuC,CAAC;AAO/C,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,eAAe,EACf,UAAU,GACX,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAC,UAAU,EAAE,UAAU,EAAC,MAAM,SAAS,CAAC;AACpD,OAAO,EAAC,cAAc,EAAE,eAAe,EAAC,MAAM,SAAS,CAAC;AACxD,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,uCAAuC,CAAC;AAO/C,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,eAAe,EACf,UAAU,GACX,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAC,UAAU,EAAE,UAAU,EAAC,MAAM,SAAS,CAAC;AACpD,OAAO,EAAC,cAAc,EAAE,eAAe,EAAC,MAAM,SAAS,CAAC;AACxD,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AACzC,cAAc,UAAU,CAAC"}
|
package/build/ts/server/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.shopifyApp = exports.boundary = exports.AppDistribution = exports.LoginErrorType = exports.ApiVersion = exports.BillingInterval = exports.DeliveryMethod = exports.LogSeverity = exports.LATEST_API_VERSION = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
4
5
|
require("@shopify/shopify-api/adapters/web-api");
|
|
5
6
|
var runtime_1 = require("@shopify/shopify-api/runtime");
|
|
6
7
|
(0, runtime_1.setAbstractRuntimeString)(function () {
|
|
@@ -19,4 +20,5 @@ var boundary_1 = require("./boundary");
|
|
|
19
20
|
Object.defineProperty(exports, "boundary", { enumerable: true, get: function () { return boundary_1.boundary; } });
|
|
20
21
|
var shopify_app_1 = require("./shopify-app");
|
|
21
22
|
Object.defineProperty(exports, "shopifyApp", { enumerable: true, get: function () { return shopify_app_1.shopifyApp; } });
|
|
23
|
+
tslib_1.__exportStar(require("./errors"), exports);
|
|
22
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":";;;;AAAA,iDAA+C;AAC/C,wDAAsE;AAEtE,IAAA,kCAAwB,EAAC;IACvB,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH,oDAM8B;AAL5B,iHAAA,kBAAkB,OAAA;AAClB,0GAAA,WAAW,OAAA;AACX,6GAAA,cAAc,OAAA;AACd,8GAAA,eAAe,OAAA;AACf,yGAAA,UAAU,OAAA;AAIZ,iCAAwD;AAAhD,uGAAA,cAAc,OAAA;AAAE,wGAAA,eAAe,OAAA;AACvC,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,6CAAyC;AAAjC,yGAAA,UAAU,OAAA;AAClB,mDAAyB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify-app.d.ts","sourceRoot":"","sources":["../../../src/server/shopify-app.ts"],"names":[],"mappings":"AAAA,OAAO,uCAAuC,CAAC;AAC/C,OAAO,EAIL,oBAAoB,EAErB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,cAAc,EAAC,MAAM,sCAAsC,CAAC;AAEpE,OAAO,EAAiB,KAAK,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAIL,KAAK,UAAU,EAKhB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"shopify-app.d.ts","sourceRoot":"","sources":["../../../src/server/shopify-app.ts"],"names":[],"mappings":"AAAA,OAAO,uCAAuC,CAAC;AAC/C,OAAO,EAIL,oBAAoB,EAErB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,cAAc,EAAC,MAAM,sCAAsC,CAAC;AAEpE,OAAO,EAAiB,KAAK,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAIL,KAAK,UAAU,EAKhB,MAAM,SAAS,CAAC;AAgBjB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CACxB,MAAM,SAAS,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,EAC/C,SAAS,SAAS,oBAAoB,EACtC,OAAO,SAAS,cAAc,EAC9B,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAiDvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify-app.doc.d.ts","sourceRoot":"","sources":["../../../src/server/shopify-app.doc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAC,MAAM,wBAAwB,CAAC;AAErE,QAAA,MAAM,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"shopify-app.doc.d.ts","sourceRoot":"","sources":["../../../src/server/shopify-app.doc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAC,MAAM,wBAAwB,CAAC;AAErE,QAAA,MAAM,IAAI,EAAE,6BAwCX,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -18,6 +18,7 @@ var data = {
|
|
|
18
18
|
description: 'Set future flags using the `future` configuration field to opt in to upcoming breaking changes.' +
|
|
19
19
|
'\n\nWith this feature, you can prepare for major releases ahead of time, as well as try out new features before they are released.',
|
|
20
20
|
type: 'FutureFlags',
|
|
21
|
+
filePath: 'src/server/future/flags.ts',
|
|
21
22
|
},
|
|
22
23
|
],
|
|
23
24
|
jsDocTypeExamples: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify-app.doc.js","sourceRoot":"","sources":["../../../src/server/shopify-app.doc.ts"],"names":[],"mappings":";;AAEA,IAAM,IAAI,GAAkC;IAC1C,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,iHAAiH;QACjH,oOAAoO;IACtO,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,UAAU;IAChB,iBAAiB,EAAE,KAAK;IACxB,WAAW,EAAE;QACX;YACE,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,8CAA8C;YAC3D,IAAI,EAAE,yBAAyB;SAChC;QACD;YACE,KAAK,EAAE,cAAc;YACrB,WAAW,EACT,iGAAiG;gBACjG,oIAAoI;YACtI,IAAI,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"shopify-app.doc.js","sourceRoot":"","sources":["../../../src/server/shopify-app.doc.ts"],"names":[],"mappings":";;AAEA,IAAM,IAAI,GAAkC;IAC1C,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,iHAAiH;QACjH,oOAAoO;IACtO,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,UAAU;IAChB,iBAAiB,EAAE,KAAK;IACxB,WAAW,EAAE;QACX;YACE,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,8CAA8C;YAC3D,IAAI,EAAE,yBAAyB;SAChC;QACD;YACE,KAAK,EAAE,cAAc;YACrB,WAAW,EACT,iGAAiG;gBACjG,oIAAoI;YACtI,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,4BAA4B;SACvC;KACF;IACD,iBAAiB,EAAE;QACjB,yBAAyB;QACzB,gBAAgB;QAChB,iBAAiB;KAClB;IACD,OAAO,EAAE;QACP;YACE,IAAI,EAAE,wBAAwB;YAC9B,QAAQ,EAAE,4CAA4C;YACtD,GAAG,EAAE,0CAA0C;SAChD;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,QAAQ,EAAE,gDAAgD;YAC1D,GAAG,EAAE,6CAA6C;SACnD;KACF;CACF,CAAC;AAEF,kBAAe,IAAI,CAAC"}
|
|
@@ -18,6 +18,7 @@ var storefront_1 = require("./unauthenticated/storefront");
|
|
|
18
18
|
var auth_code_flow_1 = require("./authenticate/admin/strategies/auth-code-flow");
|
|
19
19
|
var token_exchange_1 = require("./authenticate/admin/strategies/token-exchange");
|
|
20
20
|
var idempotent_promise_handler_1 = require("./authenticate/helpers/idempotent-promise-handler");
|
|
21
|
+
var authenticate_3 = require("./authenticate/flow/authenticate");
|
|
21
22
|
/**
|
|
22
23
|
* Creates an object your app will use to interact with Shopify.
|
|
23
24
|
*
|
|
@@ -56,6 +57,7 @@ function shopifyApp(appConfig) {
|
|
|
56
57
|
registerWebhooks: (0, webhooks_1.registerWebhooksFactory)(params),
|
|
57
58
|
authenticate: {
|
|
58
59
|
admin: authStrategy,
|
|
60
|
+
flow: (0, authenticate_3.authenticateFlowFactory)(params),
|
|
59
61
|
public: (0, public_1.authenticatePublicFactory)(params),
|
|
60
62
|
webhook: (0, authenticate_2.authenticateWebhookFactory)(params),
|
|
61
63
|
},
|
|
@@ -78,7 +80,7 @@ function isSingleMerchantApp(_shopify, config) {
|
|
|
78
80
|
return config.distribution === types_1.AppDistribution.SingleMerchant;
|
|
79
81
|
}
|
|
80
82
|
function deriveApi(appConfig) {
|
|
81
|
-
var _a, _b
|
|
83
|
+
var _a, _b;
|
|
82
84
|
var appUrl;
|
|
83
85
|
try {
|
|
84
86
|
appUrl = new URL(appConfig.appUrl);
|
|
@@ -96,9 +98,7 @@ function deriveApi(appConfig) {
|
|
|
96
98
|
if (appConfig.userAgentPrefix) {
|
|
97
99
|
userAgentPrefix = "".concat(appConfig.userAgentPrefix, " | ").concat(userAgentPrefix);
|
|
98
100
|
}
|
|
99
|
-
return (0, shopify_api_1.shopifyApi)(tslib_1.__assign(tslib_1.__assign({}, appConfig), { hostName: appUrl.host, hostScheme: appUrl.protocol.replace(':', ''), userAgentPrefix: userAgentPrefix, isEmbeddedApp: (_a = appConfig.isEmbeddedApp) !== null && _a !== void 0 ? _a : true, apiVersion: (_b = appConfig.apiVersion) !== null && _b !== void 0 ? _b : shopify_api_1.LATEST_API_VERSION, isCustomStoreApp: appConfig.distribution === types_1.AppDistribution.ShopifyAdmin, future: {
|
|
100
|
-
unstable_tokenExchange: (_c = appConfig.future) === null || _c === void 0 ? void 0 : _c.unstable_newEmbeddedAuthStrategy,
|
|
101
|
-
} }));
|
|
101
|
+
return (0, shopify_api_1.shopifyApi)(tslib_1.__assign(tslib_1.__assign({}, appConfig), { hostName: appUrl.host, hostScheme: appUrl.protocol.replace(':', ''), userAgentPrefix: userAgentPrefix, isEmbeddedApp: (_a = appConfig.isEmbeddedApp) !== null && _a !== void 0 ? _a : true, apiVersion: (_b = appConfig.apiVersion) !== null && _b !== void 0 ? _b : shopify_api_1.LATEST_API_VERSION, isCustomStoreApp: appConfig.distribution === types_1.AppDistribution.ShopifyAdmin, future: {} }));
|
|
102
102
|
}
|
|
103
103
|
function deriveConfig(appConfig, apiConfig) {
|
|
104
104
|
var _a, _b, _c, _d;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify-app.js","sourceRoot":"","sources":["../../../src/server/shopify-app.ts"],"names":[],"mappings":";;;;AAAA,iDAA+C;AAC/C,oDAM8B;AAI9B,iCASiB;AACjB,qCAAwD;AACxD,oDAAgE;AAChE,kEAAsE;AACtE,qEAAgF;AAChF,qDAAiD;AACjD,kDAAyE;AACzE,oDAAwD;AACxD,iDAA2E;AAC3E,gDAAgE;AAChE,2DAAqF;AACrF,iFAAoF;AACpF,iFAAqF;AACrF,gGAA2F;
|
|
1
|
+
{"version":3,"file":"shopify-app.js","sourceRoot":"","sources":["../../../src/server/shopify-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,16 +3,16 @@ import { SessionStorage } from '@shopify/shopify-app-session-storage';
|
|
|
3
3
|
import type { AppConfig, AppConfigArg } from './config-types';
|
|
4
4
|
import type { AuthenticateWebhook, RegisterWebhooksOptions } from './authenticate/webhooks/types';
|
|
5
5
|
import type { AuthenticatePublic } from './authenticate/public/types';
|
|
6
|
-
import type {
|
|
6
|
+
import type { AuthenticateAdmin } from './authenticate/admin/types';
|
|
7
7
|
import type { Unauthenticated } from './unauthenticated/types';
|
|
8
|
-
import {
|
|
8
|
+
import type { AuthenticateFlow } from './authenticate/flow/types';
|
|
9
|
+
import type { FutureFlagOptions } from './future/flags';
|
|
9
10
|
export interface BasicParams<Future extends FutureFlagOptions = FutureFlagOptions> {
|
|
10
11
|
api: Shopify<ApiConfigWithFutureFlags<Future>, ShopifyRestResources, ApiFutureFlags<Future>>;
|
|
11
12
|
config: AppConfig;
|
|
12
13
|
logger: Shopify['logger'];
|
|
13
14
|
}
|
|
14
|
-
export interface ApiFutureFlags<
|
|
15
|
-
unstable_tokenExchange?: Future extends FutureFlags ? Future['unstable_newEmbeddedAuthStrategy'] : boolean;
|
|
15
|
+
export interface ApiFutureFlags<_Future extends FutureFlagOptions> {
|
|
16
16
|
}
|
|
17
17
|
export type ApiConfigWithFutureFlags<Future extends FutureFlagOptions> = ConfigParams<ShopifyRestResources, ApiFutureFlags<Future>>;
|
|
18
18
|
export type JSONValue = string | number | boolean | null | JSONObject | JSONArray;
|
|
@@ -37,7 +37,6 @@ export interface LoginError {
|
|
|
37
37
|
}
|
|
38
38
|
type Login = (request: Request) => Promise<LoginError | never>;
|
|
39
39
|
type AddDocumentResponseHeaders = (request: Request, headers: Headers) => void;
|
|
40
|
-
type AuthenticateAdmin<Config extends AppConfigArg, Resources extends ShopifyRestResources = ShopifyRestResources> = (request: Request) => Promise<AdminContext<Config, Resources>>;
|
|
41
40
|
type RestResourcesType<Config extends AppConfigArg> = Config['restResources'] extends ShopifyRestResources ? Config['restResources'] : ShopifyRestResources;
|
|
42
41
|
type SessionStorageType<Config extends AppConfigArg> = Config['sessionStorage'] extends SessionStorage ? Config['sessionStorage'] : SessionStorage;
|
|
43
42
|
interface Authenticate<Config extends AppConfigArg> {
|
|
@@ -51,6 +50,17 @@ interface Authenticate<Config extends AppConfigArg> {
|
|
|
51
50
|
* @example
|
|
52
51
|
* <caption>Authenticating a request for an embedded app.</caption>
|
|
53
52
|
* ```ts
|
|
53
|
+
* // /app/routes/**\/*.jsx
|
|
54
|
+
* import { LoaderFunctionArgs, json } from "@remix-run/node";
|
|
55
|
+
* import { authenticate } from "../../shopify.server";
|
|
56
|
+
*
|
|
57
|
+
* export async function loader({ request }: LoaderFunctionArgs) {
|
|
58
|
+
* const {admin, session, sessionToken, billing} = authenticate.admin(request);
|
|
59
|
+
*
|
|
60
|
+
* return json(await admin.rest.resources.Product.count({ session }));
|
|
61
|
+
* }
|
|
62
|
+
* ```
|
|
63
|
+
* ```ts
|
|
54
64
|
* // /app/shopify.server.ts
|
|
55
65
|
* import { LATEST_API_VERSION, shopifyApp } from "@shopify/shopify-app-remix/server";
|
|
56
66
|
* import { restResources } from "@shopify/shopify-api/rest/admin/2023-04";
|
|
@@ -62,19 +72,46 @@ interface Authenticate<Config extends AppConfigArg> {
|
|
|
62
72
|
* export default shopify;
|
|
63
73
|
* export const authenticate = shopify.authenticate;
|
|
64
74
|
* ```
|
|
75
|
+
*/
|
|
76
|
+
admin: AuthenticateAdmin<Config, RestResourcesType<Config>>;
|
|
77
|
+
/**
|
|
78
|
+
* Authenticate a Flow extension Request and get back an authenticated context, containing an admin context to access
|
|
79
|
+
* the API, and the payload of the request.
|
|
80
|
+
*
|
|
81
|
+
* If there is no session for the Request, this will return an HTTP 400 error.
|
|
82
|
+
*
|
|
83
|
+
* Note that this will always be a POST request.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* <caption>Authenticating a Flow extension request.</caption>
|
|
65
87
|
* ```ts
|
|
66
88
|
* // /app/routes/**\/*.jsx
|
|
67
|
-
* import {
|
|
89
|
+
* import { ActionFunctionArgs, json } from "@remix-run/node";
|
|
68
90
|
* import { authenticate } from "../../shopify.server";
|
|
69
91
|
*
|
|
70
|
-
* export async function
|
|
71
|
-
* const {admin, session,
|
|
92
|
+
* export async function action({ request }: ActionFunctionArgs) {
|
|
93
|
+
* const {admin, session, payload} = authenticate.flow(request);
|
|
72
94
|
*
|
|
73
|
-
*
|
|
95
|
+
* // Perform flow extension logic
|
|
96
|
+
*
|
|
97
|
+
* // Return a 200 response
|
|
98
|
+
* return null;
|
|
74
99
|
* }
|
|
75
100
|
* ```
|
|
101
|
+
* ```ts
|
|
102
|
+
* // /app/shopify.server.ts
|
|
103
|
+
* import { LATEST_API_VERSION, shopifyApp } from "@shopify/shopify-app-remix/server";
|
|
104
|
+
* import { restResources } from "@shopify/shopify-api/rest/admin/2023-04";
|
|
105
|
+
*
|
|
106
|
+
* const shopify = shopifyApp({
|
|
107
|
+
* restResources,
|
|
108
|
+
* // ...etc
|
|
109
|
+
* });
|
|
110
|
+
* export default shopify;
|
|
111
|
+
* export const authenticate = shopify.authenticate;
|
|
112
|
+
* ```
|
|
76
113
|
*/
|
|
77
|
-
|
|
114
|
+
flow: AuthenticateFlow<RestResourcesType<Config>>;
|
|
78
115
|
/**
|
|
79
116
|
* Authenticate a public request and get back a session token.
|
|
80
117
|
*
|
|
@@ -164,7 +201,7 @@ export interface ShopifyAppBase<Config extends AppConfigArg> {
|
|
|
164
201
|
* import prisma from "~/db.server";
|
|
165
202
|
*
|
|
166
203
|
* const shopify = shopifyApp({
|
|
167
|
-
*
|
|
204
|
+
* sessionStorage: new PrismaSessionStorage(prisma),
|
|
168
205
|
* // ...etc
|
|
169
206
|
* })
|
|
170
207
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,OAAO,EACP,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,cAAc,EAAC,MAAM,sCAAsC,CAAC;AAEpE,OAAO,KAAK,EAAC,SAAS,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/server/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/server/types.ts"],"names":[],"mappings":";;;AA4CA,+CAA+C;AAC/C,sFAAsF;AACtF,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,yCAAsB,CAAA;IACtB,qDAAkC,CAAA;IAClC,iDAA8B,CAAA;AAChC,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAmBD,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,8CAA4B,CAAA;IAC5B,8CAA4B,CAAA;AAC9B,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../../src/server/unauthenticated/admin/factory.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../../src/server/unauthenticated/admin/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAIxC,OAAO,EAAC,2BAA2B,EAAC,MAAM,SAAS,CAAC;AAEpD,wBAAgB,kCAAkC,CAChD,SAAS,SAAS,oBAAoB,EACtC,MAAM,EAAE,WAAW,UAEX,MAAM,KACX,QAAQ,4BAA4B,SAAS,CAAC,CAAC,CAcnD"}
|