@webiny/app-graphql-playground 0.0.0-unstable.e53eceafb5 β 0.0.0-unstable.e6f0dc8ca7
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/PermissionsSchema.d.ts +15 -0
- package/PermissionsSchema.js +18 -0
- package/PermissionsSchema.js.map +1 -0
- package/README.md +10 -0
- package/SecurityPermission.d.ts +2 -0
- package/SecurityPermission.js +18 -0
- package/SecurityPermission.js.map +1 -0
- package/index.js +39 -10
- package/index.js.map +1 -1
- package/package.json +22 -24
- package/plugins/Playground.js +9 -19
- package/plugins/Playground.js.map +1 -1
- package/plugins/Playground.styles.d.ts +2 -3
- package/plugins/index.d.ts +1 -1
- package/plugins/index.js +1 -1
- package/plugins/index.js.map +1 -1
- package/routes.d.ts +4 -0
- package/routes.js +9 -0
- package/routes.js.map +1 -0
- package/types.d.ts +3 -4
- package/types.js.map +1 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const DEV_TOOLS_PERMISSIONS_SCHEMA: {
|
|
2
|
+
readonly prefix: "dev-tools";
|
|
3
|
+
readonly fullAccess: true;
|
|
4
|
+
readonly entities: [{
|
|
5
|
+
readonly id: "graphql-playground";
|
|
6
|
+
readonly title: "GraphQL Playground";
|
|
7
|
+
readonly permission: "dev-tools.graphql-playground.*";
|
|
8
|
+
readonly scopes: ["full"];
|
|
9
|
+
}, {
|
|
10
|
+
readonly id: "sdk-playground";
|
|
11
|
+
readonly title: "SDK Playground";
|
|
12
|
+
readonly permission: "dev-tools.sdk-playground.*";
|
|
13
|
+
readonly scopes: ["full"];
|
|
14
|
+
}];
|
|
15
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createPermissionSchema } from "@webiny/app-admin";
|
|
2
|
+
export const DEV_TOOLS_PERMISSIONS_SCHEMA = createPermissionSchema({
|
|
3
|
+
prefix: "dev-tools",
|
|
4
|
+
fullAccess: true,
|
|
5
|
+
entities: [{
|
|
6
|
+
id: "graphql-playground",
|
|
7
|
+
title: "GraphQL Playground",
|
|
8
|
+
permission: "dev-tools.graphql-playground.*",
|
|
9
|
+
scopes: ["full"]
|
|
10
|
+
}, {
|
|
11
|
+
id: "sdk-playground",
|
|
12
|
+
title: "SDK Playground",
|
|
13
|
+
permission: "dev-tools.sdk-playground.*",
|
|
14
|
+
scopes: ["full"]
|
|
15
|
+
}]
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=PermissionsSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createPermissionSchema","DEV_TOOLS_PERMISSIONS_SCHEMA","prefix","fullAccess","entities","id","title","permission","scopes"],"sources":["PermissionsSchema.ts"],"sourcesContent":["import { createPermissionSchema } from \"@webiny/app-admin\";\n\nexport const DEV_TOOLS_PERMISSIONS_SCHEMA = createPermissionSchema({\n prefix: \"dev-tools\",\n fullAccess: true,\n entities: [\n {\n id: \"graphql-playground\",\n title: \"GraphQL Playground\",\n permission: \"dev-tools.graphql-playground.*\",\n scopes: [\"full\"]\n },\n {\n id: \"sdk-playground\",\n title: \"SDK Playground\",\n permission: \"dev-tools.sdk-playground.*\",\n scopes: [\"full\"]\n }\n ]\n});\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,mBAAmB;AAE1D,OAAO,MAAMC,4BAA4B,GAAGD,sBAAsB,CAAC;EAC/DE,MAAM,EAAE,WAAW;EACnBC,UAAU,EAAE,IAAI;EAChBC,QAAQ,EAAE,CACN;IACIC,EAAE,EAAE,oBAAoB;IACxBC,KAAK,EAAE,oBAAoB;IAC3BC,UAAU,EAAE,gCAAgC;IAC5CC,MAAM,EAAE,CAAC,MAAM;EACnB,CAAC,EACD;IACIH,EAAE,EAAE,gBAAgB;IACpBC,KAAK,EAAE,gBAAgB;IACvBC,UAAU,EAAE,4BAA4B;IACxCC,MAAM,EAAE,CAAC,MAAM;EACnB,CAAC;AAET,CAAC,CAAC","ignoreList":[]}
|
package/README.md
CHANGED
|
@@ -1 +1,11 @@
|
|
|
1
1
|
# @webiny/app-graphql-playground
|
|
2
|
+
|
|
3
|
+
> [!NOTE]
|
|
4
|
+
> This package is part of the [Webiny](https://www.webiny.com) monorepo.
|
|
5
|
+
> Itβs **included in every Webiny project by default** and is not meant to be used as a standalone package.
|
|
6
|
+
|
|
7
|
+
π **Documentation:** [https://www.webiny.com/docs](https://www.webiny.com/docs)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
_This README file is automatically generated during the publish process._
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { AdminConfig } from "@webiny/app-admin";
|
|
3
|
+
import { ReactComponent as DevToolsIcon } from "@webiny/icons/developer_mode.svg";
|
|
4
|
+
import { DEV_TOOLS_PERMISSIONS_SCHEMA } from "./PermissionsSchema.js";
|
|
5
|
+
const {
|
|
6
|
+
Security
|
|
7
|
+
} = AdminConfig;
|
|
8
|
+
export const SecurityPermission = () => {
|
|
9
|
+
return /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(Security.Permissions, {
|
|
10
|
+
name: "dev-tools",
|
|
11
|
+
title: "Dev Tools",
|
|
12
|
+
description: "Manage Dev Tools access.",
|
|
13
|
+
icon: /*#__PURE__*/React.createElement(DevToolsIcon, null),
|
|
14
|
+
schema: DEV_TOOLS_PERMISSIONS_SCHEMA
|
|
15
|
+
}));
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=SecurityPermission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","AdminConfig","ReactComponent","DevToolsIcon","DEV_TOOLS_PERMISSIONS_SCHEMA","Security","SecurityPermission","createElement","Permissions","name","title","description","icon","schema"],"sources":["SecurityPermission.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { ReactComponent as DevToolsIcon } from \"@webiny/icons/developer_mode.svg\";\nimport { DEV_TOOLS_PERMISSIONS_SCHEMA } from \"./PermissionsSchema.js\";\n\nconst { Security } = AdminConfig;\n\nexport const SecurityPermission = () => {\n return (\n <AdminConfig>\n <Security.Permissions\n name=\"dev-tools\"\n title=\"Dev Tools\"\n description=\"Manage Dev Tools access.\"\n icon={<DevToolsIcon />}\n schema={DEV_TOOLS_PERMISSIONS_SCHEMA}\n />\n </AdminConfig>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,cAAc,IAAIC,YAAY,QAAQ,kCAAkC;AACjF,SAASC,4BAA4B;AAErC,MAAM;EAAEC;AAAS,CAAC,GAAGJ,WAAW;AAEhC,OAAO,MAAMK,kBAAkB,GAAGA,CAAA,KAAM;EACpC,oBACIN,KAAA,CAAAO,aAAA,CAACN,WAAW,qBACRD,KAAA,CAAAO,aAAA,CAACF,QAAQ,CAACG,WAAW;IACjBC,IAAI,EAAC,WAAW;IAChBC,KAAK,EAAC,WAAW;IACjBC,WAAW,EAAC,0BAA0B;IACtCC,IAAI,eAAEZ,KAAA,CAAAO,aAAA,CAACJ,YAAY,MAAE,CAAE;IACvBU,MAAM,EAAET;EAA6B,CACxC,CACQ,CAAC;AAEtB,CAAC","ignoreList":[]}
|
package/index.js
CHANGED
|
@@ -1,24 +1,53 @@
|
|
|
1
1
|
import React, { memo } from "react";
|
|
2
2
|
import { plugins } from "@webiny/plugins";
|
|
3
|
-
import { AdminConfig,
|
|
4
|
-
import
|
|
5
|
-
import
|
|
3
|
+
import { useRouter, AdminConfig, AdminLayout, HasPermission } from "@webiny/app-admin";
|
|
4
|
+
import { ReactComponent as ApiPlaygroundIcon } from "@webiny/icons/graphql_playground.svg";
|
|
5
|
+
import { ReactComponent as DevToolsIcon } from "@webiny/icons/developer_mode.svg";
|
|
6
|
+
import Playground from "./plugins/Playground.js";
|
|
7
|
+
import playgroundPlugins from "./plugins/index.js";
|
|
8
|
+
import { SecurityPermission } from "./SecurityPermission.js";
|
|
9
|
+
import { Routes } from "./routes.js";
|
|
6
10
|
const {
|
|
7
|
-
Route
|
|
11
|
+
Route,
|
|
12
|
+
Menu
|
|
8
13
|
} = AdminConfig;
|
|
9
14
|
const GraphQLPlaygroundExtension = ({
|
|
10
15
|
createApolloClient
|
|
11
16
|
}) => {
|
|
17
|
+
const router = useRouter();
|
|
12
18
|
plugins.register(playgroundPlugins);
|
|
13
|
-
return /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(
|
|
14
|
-
name: "
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SecurityPermission, null), /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(Menu, {
|
|
20
|
+
name: "dev-tools",
|
|
21
|
+
hideIfEmpty: true,
|
|
22
|
+
pin: "end",
|
|
23
|
+
element: /*#__PURE__*/React.createElement(Menu.Item, {
|
|
24
|
+
text: "Dev Tools",
|
|
25
|
+
icon: /*#__PURE__*/React.createElement(Menu.Item.Icon, {
|
|
26
|
+
label: "Dev Tools",
|
|
27
|
+
element: /*#__PURE__*/React.createElement(DevToolsIcon, null)
|
|
28
|
+
})
|
|
29
|
+
})
|
|
30
|
+
}), /*#__PURE__*/React.createElement(HasPermission, {
|
|
31
|
+
any: ["dev-tools.*", "dev-tools.graphql-playground.*"]
|
|
32
|
+
}, /*#__PURE__*/React.createElement(Menu, {
|
|
33
|
+
name: "dev-tools.graphql",
|
|
34
|
+
parent: "dev-tools",
|
|
35
|
+
element: /*#__PURE__*/React.createElement(Menu.Link, {
|
|
36
|
+
text: "GraphQL Playground",
|
|
37
|
+
to: router.getLink(Routes.ApiPlayground),
|
|
38
|
+
icon: /*#__PURE__*/React.createElement(Menu.Link.Icon, {
|
|
39
|
+
label: "GraphQL Playground",
|
|
40
|
+
element: /*#__PURE__*/React.createElement(ApiPlaygroundIcon, null)
|
|
41
|
+
})
|
|
42
|
+
})
|
|
43
|
+
})), /*#__PURE__*/React.createElement(Route, {
|
|
44
|
+
route: Routes.ApiPlayground,
|
|
45
|
+
element: /*#__PURE__*/React.createElement(AdminLayout, {
|
|
46
|
+
title: "GraphQL Playground"
|
|
18
47
|
}, /*#__PURE__*/React.createElement(Playground, {
|
|
19
48
|
createApolloClient: createApolloClient
|
|
20
49
|
}))
|
|
21
|
-
}));
|
|
50
|
+
})));
|
|
22
51
|
};
|
|
23
52
|
export const GraphQLPlayground = /*#__PURE__*/memo(GraphQLPlaygroundExtension);
|
|
24
53
|
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","memo","plugins","AdminConfig","
|
|
1
|
+
{"version":3,"names":["React","memo","plugins","useRouter","AdminConfig","AdminLayout","HasPermission","ReactComponent","ApiPlaygroundIcon","DevToolsIcon","Playground","playgroundPlugins","SecurityPermission","Routes","Route","Menu","GraphQLPlaygroundExtension","createApolloClient","router","register","createElement","Fragment","name","hideIfEmpty","pin","element","Item","text","icon","Icon","label","any","parent","Link","to","getLink","ApiPlayground","route","title","GraphQLPlayground"],"sources":["index.tsx"],"sourcesContent":["import React, { memo } from \"react\";\nimport type { ApolloClient } from \"apollo-client\";\nimport { plugins } from \"@webiny/plugins\";\nimport { useRouter, AdminConfig, AdminLayout, HasPermission } from \"@webiny/app-admin\";\nimport { ReactComponent as ApiPlaygroundIcon } from \"@webiny/icons/graphql_playground.svg\";\nimport { ReactComponent as DevToolsIcon } from \"@webiny/icons/developer_mode.svg\";\nimport Playground from \"./plugins/Playground.js\";\nimport playgroundPlugins from \"./plugins/index.js\";\nimport { SecurityPermission } from \"./SecurityPermission.js\";\nimport { Routes } from \"~/routes.js\";\n\nconst { Route, Menu } = AdminConfig;\n\ninterface CreateApolloClientParams {\n uri: string;\n}\n\ninterface GraphQLPlaygroundProps {\n createApolloClient(params: CreateApolloClientParams): ApolloClient<any>;\n}\n\nconst GraphQLPlaygroundExtension = ({ createApolloClient }: GraphQLPlaygroundProps) => {\n const router = useRouter();\n plugins.register(playgroundPlugins);\n\n return (\n <>\n <SecurityPermission />\n <AdminConfig>\n <Menu\n name={\"dev-tools\"}\n hideIfEmpty={true}\n pin={\"end\"}\n element={\n <Menu.Item\n text={\"Dev Tools\"}\n icon={<Menu.Item.Icon label=\"Dev Tools\" element={<DevToolsIcon />} />}\n />\n }\n />\n <HasPermission any={[\"dev-tools.*\", \"dev-tools.graphql-playground.*\"]}>\n <Menu\n name={\"dev-tools.graphql\"}\n parent={\"dev-tools\"}\n element={\n <Menu.Link\n text={\"GraphQL Playground\"}\n to={router.getLink(Routes.ApiPlayground)}\n icon={\n <Menu.Link.Icon\n label=\"GraphQL Playground\"\n element={<ApiPlaygroundIcon />}\n />\n }\n />\n }\n />\n </HasPermission>\n\n <Route\n route={Routes.ApiPlayground}\n element={\n <AdminLayout title={\"GraphQL Playground\"}>\n <Playground createApolloClient={createApolloClient} />\n </AdminLayout>\n }\n />\n </AdminConfig>\n </>\n );\n};\n\nexport const GraphQLPlayground = memo(GraphQLPlaygroundExtension);\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AAEnC,SAASC,OAAO,QAAQ,iBAAiB;AACzC,SAASC,SAAS,EAAEC,WAAW,EAAEC,WAAW,EAAEC,aAAa,QAAQ,mBAAmB;AACtF,SAASC,cAAc,IAAIC,iBAAiB,QAAQ,sCAAsC;AAC1F,SAASD,cAAc,IAAIE,YAAY,QAAQ,kCAAkC;AACjF,OAAOC,UAAU;AACjB,OAAOC,iBAAiB;AACxB,SAASC,kBAAkB;AAC3B,SAASC,MAAM;AAEf,MAAM;EAAEC,KAAK;EAAEC;AAAK,CAAC,GAAGX,WAAW;AAUnC,MAAMY,0BAA0B,GAAGA,CAAC;EAAEC;AAA2C,CAAC,KAAK;EACnF,MAAMC,MAAM,GAAGf,SAAS,CAAC,CAAC;EAC1BD,OAAO,CAACiB,QAAQ,CAACR,iBAAiB,CAAC;EAEnC,oBACIX,KAAA,CAAAoB,aAAA,CAAApB,KAAA,CAAAqB,QAAA,qBACIrB,KAAA,CAAAoB,aAAA,CAACR,kBAAkB,MAAE,CAAC,eACtBZ,KAAA,CAAAoB,aAAA,CAAChB,WAAW,qBACRJ,KAAA,CAAAoB,aAAA,CAACL,IAAI;IACDO,IAAI,EAAE,WAAY;IAClBC,WAAW,EAAE,IAAK;IAClBC,GAAG,EAAE,KAAM;IACXC,OAAO,eACHzB,KAAA,CAAAoB,aAAA,CAACL,IAAI,CAACW,IAAI;MACNC,IAAI,EAAE,WAAY;MAClBC,IAAI,eAAE5B,KAAA,CAAAoB,aAAA,CAACL,IAAI,CAACW,IAAI,CAACG,IAAI;QAACC,KAAK,EAAC,WAAW;QAACL,OAAO,eAAEzB,KAAA,CAAAoB,aAAA,CAACX,YAAY,MAAE;MAAE,CAAE;IAAE,CACzE;EACJ,CACJ,CAAC,eACFT,KAAA,CAAAoB,aAAA,CAACd,aAAa;IAACyB,GAAG,EAAE,CAAC,aAAa,EAAE,gCAAgC;EAAE,gBAClE/B,KAAA,CAAAoB,aAAA,CAACL,IAAI;IACDO,IAAI,EAAE,mBAAoB;IAC1BU,MAAM,EAAE,WAAY;IACpBP,OAAO,eACHzB,KAAA,CAAAoB,aAAA,CAACL,IAAI,CAACkB,IAAI;MACNN,IAAI,EAAE,oBAAqB;MAC3BO,EAAE,EAAEhB,MAAM,CAACiB,OAAO,CAACtB,MAAM,CAACuB,aAAa,CAAE;MACzCR,IAAI,eACA5B,KAAA,CAAAoB,aAAA,CAACL,IAAI,CAACkB,IAAI,CAACJ,IAAI;QACXC,KAAK,EAAC,oBAAoB;QAC1BL,OAAO,eAAEzB,KAAA,CAAAoB,aAAA,CAACZ,iBAAiB,MAAE;MAAE,CAClC;IACJ,CACJ;EACJ,CACJ,CACU,CAAC,eAEhBR,KAAA,CAAAoB,aAAA,CAACN,KAAK;IACFuB,KAAK,EAAExB,MAAM,CAACuB,aAAc;IAC5BX,OAAO,eACHzB,KAAA,CAAAoB,aAAA,CAACf,WAAW;MAACiC,KAAK,EAAE;IAAqB,gBACrCtC,KAAA,CAAAoB,aAAA,CAACV,UAAU;MAACO,kBAAkB,EAAEA;IAAmB,CAAE,CAC5C;EAChB,CACJ,CACQ,CACf,CAAC;AAEX,CAAC;AAED,OAAO,MAAMsB,iBAAiB,gBAAGtC,IAAI,CAACe,0BAA0B,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app-graphql-playground",
|
|
3
|
-
"version": "0.0.0-unstable.
|
|
4
|
-
"
|
|
3
|
+
"version": "0.0.0-unstable.e6f0dc8ca7",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": "./index.js",
|
|
7
|
+
"./*": "./*"
|
|
8
|
+
},
|
|
5
9
|
"repository": {
|
|
6
10
|
"type": "git",
|
|
7
11
|
"url": "https://github.com/webiny/webiny-js.git"
|
|
@@ -9,39 +13,33 @@
|
|
|
9
13
|
"author": "Webiny Ltd",
|
|
10
14
|
"license": "MIT",
|
|
11
15
|
"dependencies": {
|
|
12
|
-
"@emotion/react": "11.
|
|
13
|
-
"@emotion/styled": "11.
|
|
14
|
-
"@webiny/
|
|
15
|
-
"@webiny/app
|
|
16
|
-
"@webiny/app-
|
|
17
|
-
"@webiny/
|
|
18
|
-
"@webiny/plugins": "0.0.0-unstable.
|
|
19
|
-
"@webiny/ui": "0.0.0-unstable.e53eceafb5",
|
|
16
|
+
"@emotion/react": "11.14.0",
|
|
17
|
+
"@emotion/styled": "11.14.1",
|
|
18
|
+
"@webiny/admin-ui": "0.0.0-unstable.e6f0dc8ca7",
|
|
19
|
+
"@webiny/app": "0.0.0-unstable.e6f0dc8ca7",
|
|
20
|
+
"@webiny/app-admin": "0.0.0-unstable.e6f0dc8ca7",
|
|
21
|
+
"@webiny/icons": "0.0.0-unstable.e6f0dc8ca7",
|
|
22
|
+
"@webiny/plugins": "0.0.0-unstable.e6f0dc8ca7",
|
|
20
23
|
"apollo-cache": "1.3.5",
|
|
21
24
|
"apollo-client": "2.6.10",
|
|
22
25
|
"apollo-link": "1.2.14",
|
|
23
26
|
"apollo-link-context": "1.0.20",
|
|
24
27
|
"apollo-utilities": "1.3.4",
|
|
25
|
-
"graphql": "
|
|
26
|
-
"load-script": "
|
|
27
|
-
"
|
|
28
|
-
"react": "18.
|
|
29
|
-
"react-dom": "18.2.0"
|
|
28
|
+
"graphql": "16.14.0",
|
|
29
|
+
"load-script": "2.0.0",
|
|
30
|
+
"react": "18.3.1",
|
|
31
|
+
"react-dom": "18.3.1"
|
|
30
32
|
},
|
|
31
33
|
"devDependencies": {
|
|
32
|
-
"@emotion/babel-plugin": "11.
|
|
33
|
-
"@webiny/
|
|
34
|
-
"rimraf": "6.
|
|
35
|
-
"typescript": "
|
|
34
|
+
"@emotion/babel-plugin": "11.13.5",
|
|
35
|
+
"@webiny/build-tools": "0.0.0-unstable.e6f0dc8ca7",
|
|
36
|
+
"rimraf": "6.1.3",
|
|
37
|
+
"typescript": "6.0.3"
|
|
36
38
|
},
|
|
37
39
|
"publishConfig": {
|
|
38
40
|
"access": "public",
|
|
39
41
|
"directory": "dist"
|
|
40
42
|
},
|
|
41
|
-
"scripts": {
|
|
42
|
-
"build": "node ../cli/bin.js run build",
|
|
43
|
-
"watch": "node ../cli/bin.js run watch"
|
|
44
|
-
},
|
|
45
43
|
"adio": {
|
|
46
44
|
"ignore": {
|
|
47
45
|
"src": [
|
|
@@ -52,5 +50,5 @@
|
|
|
52
50
|
]
|
|
53
51
|
}
|
|
54
52
|
},
|
|
55
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "e6f0dc8ca741c1fcc3fec9a5b9e86fdd49544641"
|
|
56
54
|
}
|
package/plugins/Playground.js
CHANGED
|
@@ -1,20 +1,15 @@
|
|
|
1
1
|
import React, { Fragment, useEffect, useRef, useCallback, useState } from "react";
|
|
2
2
|
import { ApolloLink } from "apollo-link";
|
|
3
3
|
import { setContext } from "apollo-link-context";
|
|
4
|
-
/**
|
|
5
|
-
* Package load-script does not have types.
|
|
6
|
-
*/
|
|
7
|
-
// @ts-expect-error
|
|
8
4
|
import loadScript from "load-script";
|
|
9
5
|
import { Global } from "@emotion/react";
|
|
10
6
|
import { plugins } from "@webiny/plugins";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import { ORIGINAL_GQL_PLAYGROUND_URL, PATCHED_GQL_PLAYGROUND_URL } from "./constants";
|
|
7
|
+
import { useIdentity } from "@webiny/app-admin";
|
|
8
|
+
import { OverlayLoader } from "@webiny/admin-ui";
|
|
9
|
+
import { playgroundDialog, PlaygroundContainer } from "./Playground.styles.js";
|
|
10
|
+
import { settings } from "./settings.js";
|
|
11
|
+
import { config as appConfig } from "@webiny/app/config.js";
|
|
12
|
+
import { ORIGINAL_GQL_PLAYGROUND_URL, PATCHED_GQL_PLAYGROUND_URL } from "./constants.js";
|
|
18
13
|
const withHeaders = (link, headers) => {
|
|
19
14
|
return ApolloLink.from([setContext(async (_, req) => {
|
|
20
15
|
return {
|
|
@@ -43,16 +38,11 @@ const Playground = ({
|
|
|
43
38
|
createApolloClient
|
|
44
39
|
}) => {
|
|
45
40
|
const [loading, setLoading] = useState(true);
|
|
46
|
-
const {
|
|
47
|
-
getCurrentLocale
|
|
48
|
-
} = useI18N();
|
|
49
41
|
const {
|
|
50
42
|
identity
|
|
51
|
-
} =
|
|
43
|
+
} = useIdentity();
|
|
52
44
|
const links = useRef({});
|
|
53
|
-
const locale = getCurrentLocale("content");
|
|
54
45
|
const tabs = plugins.byType("graphql-playground-tab").map(pl => pl.tab({
|
|
55
|
-
locale: locale,
|
|
56
46
|
identity: identity
|
|
57
47
|
})).filter(Boolean);
|
|
58
48
|
const createApolloLink = useCallback(({
|
|
@@ -91,8 +81,8 @@ const Playground = ({
|
|
|
91
81
|
});
|
|
92
82
|
}
|
|
93
83
|
}, [loading]);
|
|
94
|
-
return /*#__PURE__*/React.createElement(Fragment, null, loading ? /*#__PURE__*/React.createElement(
|
|
95
|
-
|
|
84
|
+
return /*#__PURE__*/React.createElement(Fragment, null, loading ? /*#__PURE__*/React.createElement(OverlayLoader, {
|
|
85
|
+
text: "Loading playground..."
|
|
96
86
|
}) : /*#__PURE__*/React.createElement(PlaygroundContainer, {
|
|
97
87
|
id: "graphql-playground"
|
|
98
88
|
}), /*#__PURE__*/React.createElement(Global, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Fragment","useEffect","useRef","useCallback","useState","ApolloLink","setContext","loadScript","Global","plugins","
|
|
1
|
+
{"version":3,"names":["React","Fragment","useEffect","useRef","useCallback","useState","ApolloLink","setContext","loadScript","Global","plugins","useIdentity","OverlayLoader","playgroundDialog","PlaygroundContainer","settings","config","appConfig","ORIGINAL_GQL_PLAYGROUND_URL","PATCHED_GQL_PLAYGROUND_URL","withHeaders","link","headers","from","_","req","initScripts","Promise","resolve","window","GraphQLPlayground","err","Playground","createApolloClient","loading","setLoading","identity","links","tabs","byType","map","pl","tab","filter","Boolean","createApolloLink","endpoint","current","apiUrl","getKey","process","env","REACT_APP_API_URL","includes","Object","values","uri","then","init","document","getElementById","createElement","text","id","styles"],"sources":["Playground.tsx"],"sourcesContent":["import React, { Fragment, useEffect, useRef, useCallback, useState } from \"react\";\nimport { ApolloLink } from \"apollo-link\";\nimport { setContext } from \"apollo-link-context\";\nimport loadScript from \"load-script\";\nimport { Global } from \"@emotion/react\";\nimport { plugins } from \"@webiny/plugins\";\nimport { useIdentity } from \"@webiny/app-admin\";\nimport type { Identity } from \"@webiny/app-admin/domain/Identity.js\";\nimport { OverlayLoader } from \"@webiny/admin-ui\";\nimport { playgroundDialog, PlaygroundContainer } from \"./Playground.styles.js\";\nimport { settings } from \"./settings.js\";\nimport { config as appConfig } from \"@webiny/app/config.js\";\nimport type ApolloClient from \"apollo-client\";\nimport type { GraphQLPlaygroundTabPlugin } from \"~/types.js\";\nimport { ORIGINAL_GQL_PLAYGROUND_URL, PATCHED_GQL_PLAYGROUND_URL } from \"./constants.js\";\n\nconst withHeaders = (link: ApolloLink, headers: Record<string, string>): ApolloLink => {\n return ApolloLink.from([\n setContext(async (_, req) => {\n return {\n headers: {\n ...req.headers,\n ...headers\n }\n };\n }),\n link\n ]);\n};\n\nconst initScripts = () => {\n return new Promise((resolve: any) => {\n // @ts-expect-error\n if (window.GraphQLPlayground) {\n return resolve();\n }\n\n loadScript(PATCHED_GQL_PLAYGROUND_URL, err => {\n if (err) {\n return loadScript(ORIGINAL_GQL_PLAYGROUND_URL, resolve);\n }\n\n resolve();\n });\n });\n};\n\ninterface CreateApolloClientParams {\n uri: string;\n}\n\ninterface PlaygroundProps {\n createApolloClient: (params: CreateApolloClientParams) => ApolloClient<any>;\n}\n\ninterface CreateApolloLinkCallableParams {\n endpoint: string;\n headers: Record<string, string>;\n}\n\ninterface CreateApolloLinkCallableResult {\n link: ApolloLink;\n}\n\ninterface CreateApolloLinkCallable {\n (params: CreateApolloLinkCallableParams): CreateApolloLinkCallableResult;\n}\n\nconst Playground = ({ createApolloClient }: PlaygroundProps) => {\n const [loading, setLoading] = useState(true);\n const { identity } = useIdentity();\n const links = useRef<Record<string, ApolloLink>>({});\n\n const tabs = plugins\n .byType<GraphQLPlaygroundTabPlugin>(\"graphql-playground-tab\")\n .map(pl =>\n pl.tab({\n identity: identity as Identity\n })\n )\n .filter(Boolean);\n\n const createApolloLink = useCallback<CreateApolloLinkCallable>(({ endpoint, headers }) => {\n const current = links.current;\n // If the request endpoint is not know to us, return the first available\n const apiUrl = appConfig.getKey(\"API_URL\", process.env.REACT_APP_API_URL) as string;\n if (!endpoint.includes(apiUrl)) {\n return { link: withHeaders(Object.values(current)[0], headers) };\n }\n\n if (!current[endpoint]) {\n current[endpoint] = createApolloClient({ uri: endpoint }).link;\n }\n\n return {\n link: withHeaders(current[endpoint], headers)\n };\n }, []);\n\n useEffect(() => {\n initScripts().then(() => {\n setLoading(false);\n });\n }, []);\n\n useEffect(() => {\n if (!loading) {\n // @ts-expect-error\n window.GraphQLPlayground.init(document.getElementById(\"graphql-playground\"), {\n tabs,\n createApolloLink,\n settings\n });\n }\n }, [loading]);\n\n return (\n <Fragment>\n {loading ? (\n <OverlayLoader text={\"Loading playground...\"} />\n ) : (\n <PlaygroundContainer id={\"graphql-playground\"} />\n )}\n <Global styles={playgroundDialog} />\n </Fragment>\n );\n};\n\nexport default Playground;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
export declare const PlaygroundContainer: import("@emotion/styled").StyledComponent<{
|
|
3
|
-
theme?: import("@emotion/react").Theme
|
|
4
|
-
as?:
|
|
2
|
+
theme?: import("@emotion/react").Theme;
|
|
3
|
+
as?: React.ElementType;
|
|
5
4
|
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
6
5
|
export declare const playgroundDialog: {
|
|
7
6
|
".ReactModalPortal": {
|
package/plugins/index.d.ts
CHANGED
package/plugins/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// @ts-expect-error
|
|
2
2
|
import placeholder from "!!raw-loader!./placeholder.graphql";
|
|
3
|
-
import { config as appConfig } from "@webiny/app/config";
|
|
3
|
+
import { config as appConfig } from "@webiny/app/config.js";
|
|
4
4
|
const plugin = {
|
|
5
5
|
type: "graphql-playground-tab",
|
|
6
6
|
tab() {
|
package/plugins/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["placeholder","config","appConfig","plugin","type","tab","apiUrl","getKey","process","env","REACT_APP_API_URL","name","endpoint","headers","query"],"sources":["index.tsx"],"sourcesContent":["import type { GraphQLPlaygroundTabPlugin } from \"~/types\";\n// @ts-expect-error\nimport placeholder from \"!!raw-loader!./placeholder.graphql\";\nimport { config as appConfig } from \"@webiny/app/config\";\n\nconst plugin: GraphQLPlaygroundTabPlugin = {\n type: \"graphql-playground-tab\",\n tab() {\n const apiUrl = appConfig.getKey(\"API_URL\", process.env.REACT_APP_API_URL) as string;\n return {\n name: \"Main API\",\n endpoint: apiUrl + \"/graphql\",\n headers: {},\n query: placeholder\n };\n }\n};\nexport default [plugin];\n"],"mappings":"AACA;AACA,OAAOA,WAAW,MAAM,oCAAoC;AAC5D,SAASC,MAAM,IAAIC,SAAS,QAAQ,
|
|
1
|
+
{"version":3,"names":["placeholder","config","appConfig","plugin","type","tab","apiUrl","getKey","process","env","REACT_APP_API_URL","name","endpoint","headers","query"],"sources":["index.tsx"],"sourcesContent":["import type { GraphQLPlaygroundTabPlugin } from \"~/types.js\";\n// @ts-expect-error\nimport placeholder from \"!!raw-loader!./placeholder.graphql\";\nimport { config as appConfig } from \"@webiny/app/config.js\";\n\nconst plugin: GraphQLPlaygroundTabPlugin = {\n type: \"graphql-playground-tab\",\n tab() {\n const apiUrl = appConfig.getKey(\"API_URL\", process.env.REACT_APP_API_URL) as string;\n return {\n name: \"Main API\",\n endpoint: apiUrl + \"/graphql\",\n headers: {},\n query: placeholder\n };\n }\n};\nexport default [plugin];\n"],"mappings":"AACA;AACA,OAAOA,WAAW,MAAM,oCAAoC;AAC5D,SAASC,MAAM,IAAIC,SAAS,QAAQ,uBAAuB;AAE3D,MAAMC,MAAkC,GAAG;EACvCC,IAAI,EAAE,wBAAwB;EAC9BC,GAAGA,CAAA,EAAG;IACF,MAAMC,MAAM,GAAGJ,SAAS,CAACK,MAAM,CAAC,SAAS,EAAEC,OAAO,CAACC,GAAG,CAACC,iBAAiB,CAAW;IACnF,OAAO;MACHC,IAAI,EAAE,UAAU;MAChBC,QAAQ,EAAEN,MAAM,GAAG,UAAU;MAC7BO,OAAO,EAAE,CAAC,CAAC;MACXC,KAAK,EAAEd;IACX,CAAC;EACL;AACJ,CAAC;AACD,eAAe,CAACG,MAAM,CAAC","ignoreList":[]}
|
package/routes.d.ts
ADDED
package/routes.js
ADDED
package/routes.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Route","Routes","ApiPlayground","name","path"],"sources":["routes.ts"],"sourcesContent":["import { Route } from \"@webiny/app-admin\";\n\nexport const Routes = {\n ApiPlayground: new Route({\n name: \"ApiPlayground\",\n path: \"/api-playground\"\n })\n};\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,mBAAmB;AAEzC,OAAO,MAAMC,MAAM,GAAG;EAClBC,aAAa,EAAE,IAAIF,KAAK,CAAC;IACrBG,IAAI,EAAE,eAAe;IACrBC,IAAI,EAAE;EACV,CAAC;AACL,CAAC","ignoreList":[]}
|
package/types.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { Identity } from "@webiny/app-admin/domain/Identity.js";
|
|
2
|
+
import type { Plugin } from "@webiny/plugins/types.js";
|
|
3
3
|
export interface GraphQLPlaygroundTabParams {
|
|
4
|
-
|
|
5
|
-
identity: SecurityIdentity;
|
|
4
|
+
identity: Identity;
|
|
6
5
|
}
|
|
7
6
|
export interface GraphQLPlaygroundTab {
|
|
8
7
|
name: string;
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { Identity } from \"@webiny/app-admin/domain/Identity.js\";\nimport type { Plugin } from \"@webiny/plugins/types.js\";\n\nexport interface GraphQLPlaygroundTabParams {\n identity: Identity;\n}\nexport interface GraphQLPlaygroundTab {\n name: string;\n endpoint: string;\n headers: Record<string, string>;\n query: string;\n}\n\nexport type GraphQLPlaygroundTabPlugin = Plugin<{\n type: \"graphql-playground-tab\";\n tab: (params: GraphQLPlaygroundTabParams) => GraphQLPlaygroundTab | null;\n}>;\n"],"mappings":"","ignoreList":[]}
|