Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 55 additions & 47 deletions src/__tests__/__snapshots__/integration.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -42,25 +42,16 @@ exports[`Persisted Query Plugin Integration Tests > Client Manifest Generation >
exports[`Persisted Query Plugin Integration Tests > Server Manifest Generation > generates valid server manifest with default options 1`] = `
{
"format": "apollo-persisted-query-manifest",
"operations": {
"2ed387ebd9ffea9ea9b42fb1c4c2d149d3c5c45c2c8603ba4ffc755d296dc794": {
"body": "mutation UpdateUser($id: ID!, $name: String, $email: String) {
updateUser(id: $id, name: $name, email: $email) {
...UserFields
__typename
}
}

fragment UserFields on User {
id
name
email
__typename
"operations": [
{
"body": "query HelloQuery {
hello
}",
"name": "UpdateUser",
"type": "mutation",
"id": "789ccee2f24e6bec795f6d345529a1fc195e282453956a69eef4209b06b347a9",
"name": "HelloQuery",
"type": "query",
},
"3ac4d5cb7197d3811eedb53feb1db0615ce67aaa91fe1f8d9175e12d37eb6239": {
{
"body": "query GetUser($id: ID!) {
user(id: $id) {
...UserFields
Expand All @@ -85,12 +76,13 @@ fragment PostFields on Post {
content
__typename
}",
"id": "3ac4d5cb7197d3811eedb53feb1db0615ce67aaa91fe1f8d9175e12d37eb6239",
"name": "GetUser",
"type": "query",
},
"3af4547b737d2086c4a7f6f74f61e310c1c9d1a54c6218f34edfa592a43bf7b5": {
"body": "subscription OnUserCreated {
userCreated {
{
"body": "query GetUsers {
users {
...UserFields
__typename
}
Expand All @@ -102,10 +94,11 @@ fragment UserFields on User {
email
__typename
}",
"name": "OnUserCreated",
"type": "subscription",
"id": "85306f39b57686912f3e429274c2448e2b4a94f39293875f42d674a7363574ca",
"name": "GetUsers",
"type": "query",
},
"3c6302a47f6243d487fac04c0af0f5f95e0187c17cb1a27e06c7a7c9f0488fd4": {
{
"body": "query GetPost($id: ID!) {
post(id: $id) {
...PostFields
Expand All @@ -130,19 +123,31 @@ fragment UserFields on User {
email
__typename
}",
"id": "3c6302a47f6243d487fac04c0af0f5f95e0187c17cb1a27e06c7a7c9f0488fd4",
"name": "GetPost",
"type": "query",
},
"789ccee2f24e6bec795f6d345529a1fc195e282453956a69eef4209b06b347a9": {
"body": "query HelloQuery {
hello
{
"body": "query GetPosts {
posts {
...PostFields
__typename
}
}

fragment PostFields on Post {
id
title
content
__typename
}",
"name": "HelloQuery",
"id": "ae215a6ca2480a8c5c721801d9f943cbb54055ce3bdf855ef21bd255b6bbfdde",
"name": "GetPosts",
"type": "query",
},
"85306f39b57686912f3e429274c2448e2b4a94f39293875f42d674a7363574ca": {
"body": "query GetUsers {
users {
{
"body": "mutation CreateUser($name: String!, $email: String) {
createUser(name: $name, email: $email) {
...UserFields
__typename
}
Expand All @@ -154,29 +159,31 @@ fragment UserFields on User {
email
__typename
}",
"name": "GetUsers",
"type": "query",
"id": "ba9e16c83890d5d9ecabcb415610364fee2932887b2bc393c7143b71aab269b3",
"name": "CreateUser",
"type": "mutation",
},
"ae215a6ca2480a8c5c721801d9f943cbb54055ce3bdf855ef21bd255b6bbfdde": {
"body": "query GetPosts {
posts {
...PostFields
{
"body": "mutation UpdateUser($id: ID!, $name: String, $email: String) {
updateUser(id: $id, name: $name, email: $email) {
...UserFields
__typename
}
}

fragment PostFields on Post {
fragment UserFields on User {
id
title
content
name
email
__typename
}",
"name": "GetPosts",
"type": "query",
"id": "2ed387ebd9ffea9ea9b42fb1c4c2d149d3c5c45c2c8603ba4ffc755d296dc794",
"name": "UpdateUser",
"type": "mutation",
},
"ba9e16c83890d5d9ecabcb415610364fee2932887b2bc393c7143b71aab269b3": {
"body": "mutation CreateUser($name: String!, $email: String) {
createUser(name: $name, email: $email) {
{
"body": "subscription OnUserCreated {
userCreated {
...UserFields
__typename
}
Expand All @@ -188,10 +195,11 @@ fragment UserFields on User {
email
__typename
}",
"name": "CreateUser",
"type": "mutation",
"id": "3af4547b737d2086c4a7f6f74f61e310c1c9d1a54c6218f34edfa592a43bf7b5",
"name": "OnUserCreated",
"type": "subscription",
},
},
],
"version": 1,
}
`;
5 changes: 3 additions & 2 deletions src/core/generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,17 +104,18 @@ export function generateServerManifest(
const manifest: ServerOperationListManifest = {
format: 'apollo-persisted-query-manifest',
version: 1,
operations: {},
operations: [],
};

for (const operation of operations) {
const operationDetails: PersistedQueryManifestOperation = {
id: operation.hash,
type: operation.type,
name: operation.name,
body: operation.query,
};

manifest.operations[operation.hash] = operationDetails;
manifest.operations.push(operationDetails);
}

return manifest;
Expand Down
4 changes: 3 additions & 1 deletion src/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ export interface PluginConfig {
* Represents a single operation in the persisted query manifest
*/
export interface PersistedQueryManifestOperation {
/** Operation hash */
id: string;
/** Operation type (query, mutation, subscription) */
type: OperationTypeNode;
/** Operation name */
Expand All @@ -47,7 +49,7 @@ export interface PersistedQueryManifestOperation {
export interface ServerOperationListManifest {
format: 'apollo-persisted-query-manifest';
version: 1;
operations: Record<string, PersistedQueryManifestOperation>;
operations: PersistedQueryManifestOperation[];
}

/**
Expand Down