Skip to content

Commit d52b064

Browse files
authored
Merge pull request rmosolgo#4328 from rmosolgo/js-fix-typo
JS: fix typo for changeset-version, more logging
2 parents d7e0cb0 + 6d90ab2 commit d52b064

7 files changed

Lines changed: 80 additions & 25 deletions

File tree

javascript_client/src/__tests__/__snapshots__/syncTest.ts.snap

Lines changed: 42 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

javascript_client/src/__tests__/cliTest.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ describe("CLI", () => {
1212
})
1313

1414
it("runs with some options", () => {
15-
var buffer = childProcess.execSync("node ./cli.js sync --client=something --header=Abcd:efgh --header=\"Abc: 123 45\" --changeset-version=2023-01-01 --mode=file --path=\"**/doc1.graphql\"", {stdio: "pipe"})
15+
var buffer = childProcess.execSync("node ./cli.js sync --client=something --header=Abcd:efgh --header=\"Abc: 123 45\" --changeset-version=2023-01-01 --mode=file --path=\"**/doc1.graphql\" --verbose", {stdio: "pipe"})
1616
var response = buffer.toString().replace(/\033\[[0-9;]*m/g, "")
17-
expect(response).toEqual("No URL; Generating artifacts without syncing them\nGenerating client module in src/OperationStoreClient.js...\n✓ Done!\n")
17+
expect(response).toEqual("No URL; Generating artifacts without syncing them\n[Sync] glob: **/doc1.graphql\n[Sync] 1 files:\n[Sync] - src/__tests__/documents/doc1.graphql\nGenerating client module in src/OperationStoreClient.js...\n✓ Done!\n")
1818
})
1919

2020
it("runs with just one header", () => {

javascript_client/src/__tests__/syncTest.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import sync from "../sync"
2+
import Logger from "../sync/logger"
23
var fs = require("fs")
34
var nock = require("nock")
45

@@ -77,10 +78,8 @@ describe("sync operations", () => {
7778
path: "./src/__tests__/documents",
7879
url: "bogus",
7980
verbose: true,
80-
send: (_sendPayload: string, opts: { verbose: boolean }) => {
81-
if (opts.verbose) {
82-
console.log("Verbose!")
83-
}
81+
send: (_sendPayload: string, opts: { logger: Logger }) => {
82+
opts.logger.log("Verbose!")
8483
},
8584
}
8685
return sync(options).then(function() {

javascript_client/src/cli.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ optional arguments:
7373
addTypename: argv["add-typename"],
7474
quiet: argv.hasOwnProperty("quiet"),
7575
verbose: argv.hasOwnProperty("verbose"),
76-
changesetVersion: argv["changset-version"],
76+
changesetVersion: argv["changeset-version"],
7777
})
7878

7979
result.then(function() {

javascript_client/src/sync/__tests__/sendPayloadTest.ts

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
11
jest.dontMock('nock');
22
import nock from "nock"
3+
import Logger from "../logger";
34
import sendPayload from "../sendPayload"
45

6+
var fakeLogger = {
7+
log: function() {},
8+
bright: function(str: string) { return str },
9+
colorize: function(str: string) { return str },
10+
red: function(str: string) { return str },
11+
green: function(str: string) { return str },
12+
error: function() {},
13+
isQuiet: true,
14+
} as Logger
15+
516
describe("Posting GraphQL to OperationStore Endpoint", () => {
617
it("Posts to the specified URL", () => {
718
var mock = nock("http://example.com")
819
.post("/stored_operations/sync")
920
.reply(200, { "ok" : "ok" })
1021

11-
return sendPayload("payload", { url: "http://example.com/stored_operations/sync" }).then(function() {
22+
return sendPayload("payload", { url: "http://example.com/stored_operations/sync", logger: fakeLogger }).then(function() {
1223
expect(mock.isDone()).toEqual(true)
1324
})
1425
})
@@ -18,7 +29,7 @@ describe("Posting GraphQL to OperationStore Endpoint", () => {
1829
.post("/stored_operations/sync")
1930
.reply(200, { "ok" : "ok" })
2031

21-
return sendPayload("payload", { url: "https://example2.com/stored_operations/sync" }).then(function() {
32+
return sendPayload("payload", { url: "https://example2.com/stored_operations/sync", logger: fakeLogger }).then(function() {
2233
expect(mock.isDone()).toEqual(true)
2334
})
2435
})
@@ -29,7 +40,7 @@ describe("Posting GraphQL to OperationStore Endpoint", () => {
2940
.basicAuth({ user: "username", pass: "pass" })
3041
.reply(200, { "ok" : "ok" })
3142

32-
return sendPayload("payload", { url: "https://username:pass@example2.com:229/stored_operations/sync?q=1" }).then(function() {
43+
return sendPayload("payload", { url: "https://username:pass@example2.com:229/stored_operations/sync?q=1", logger: fakeLogger }).then(function() {
3344
expect(mock.isDone()).toEqual(true)
3445
})
3546
})
@@ -39,7 +50,7 @@ describe("Posting GraphQL to OperationStore Endpoint", () => {
3950
.post("/stored_operations/sync")
4051
.reply(200, { result: "ok" })
4152

42-
return sendPayload("payload", { url: "http://example.com/stored_operations/sync" }).then(function(response) {
53+
return sendPayload("payload", { url: "http://example.com/stored_operations/sync", logger: fakeLogger }).then(function(response) {
4354
expect(response).toEqual('{"result":"ok"}')
4455
})
4556
})
@@ -54,7 +65,7 @@ describe("Posting GraphQL to OperationStore Endpoint", () => {
5465
.post("/stored_operations/sync")
5566
.reply(200, { result: "ok" })
5667

57-
return sendPayload("payload", { url: "http://example.com/stored_operations/sync", headers: { thing: "Stuff" }, changesetVersion: "2023-01-01" }).then(function(_response) {
68+
return sendPayload("payload", { url: "http://example.com/stored_operations/sync", logger: fakeLogger, headers: { thing: "Stuff" }, changesetVersion: "2023-01-01" }).then(function(_response) {
5869
expect(mock.isDone()).toEqual(true)
5970
})
6071
})
@@ -72,7 +83,7 @@ describe("Posting GraphQL to OperationStore Endpoint", () => {
7283
.post("/stored_operations/sync")
7384
.reply(200, { result: "ok" })
7485

75-
var opts = {secret: key, client: "Abc", url: "http://example.com/stored_operations/sync"}
86+
var opts = {secret: key, client: "Abc", url: "http://example.com/stored_operations/sync", logger: fakeLogger }
7687
return sendPayload(payload, opts).then(function(response) {
7788
expect(response).toEqual('{"result":"ok"}')
7889
expect(mock.isDone()).toEqual(true)

javascript_client/src/sync/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,9 @@ function sync(options: SyncOptions) {
147147
url: url,
148148
client: clientName,
149149
secret: encryptionKey,
150-
verbose: verbose,
151150
headers: options.headers,
152151
changesetVersion: options.changesetVersion,
152+
logger: logger,
153153
}
154154
var sendPromise = Promise.resolve(sendFunc(payload, sendOpts))
155155
return sendPromise.then(function(response) {

javascript_client/src/sync/sendPayload.ts

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ import http from "http"
22
import https from "https"
33
import url from "url"
44
import crypto from 'crypto'
5+
import Logger from './logger'
56

67
interface SendPayloadOptions {
78
url: string,
9+
logger: Logger,
810
secret?: string,
911
client?: string,
10-
verbose?: boolean,
1112
headers?: { [key: string]: string },
1213
changesetVersion?: string,
1314
}
@@ -21,15 +22,15 @@ interface SendPayloadOptions {
2122
* @param {String} options.url - Target URL
2223
* @param {String} options.secret - (optional) used for HMAC header if provided
2324
* @param {String} options.client - (optional) used for HMAC header if provided
24-
* @param {Boolean} options.verbose - (optional) if true, print extra info for debugging
25+
* @param {Logger} options.logger - A logger for when `verbose` is true
2526
* @param {Object<String, String>} options.headers - (optional) extra headers for the request
2627
* @return {Promise}
2728
*/
2829
function sendPayload(payload: any, options: SendPayloadOptions) {
2930
var syncUrl = options.url
3031
var key = options.secret
3132
var clientName = options.client
32-
var verbose = options.verbose
33+
var logger = options.logger
3334
// Prepare JS object as form data
3435
var postData = JSON.stringify(payload)
3536

@@ -43,6 +44,7 @@ function sendPayload(payload: any, options: SendPayloadOptions) {
4344
}
4445

4546
if (options.changesetVersion) {
47+
logger.log("Changeset Version: ", logger.bright(options.changesetVersion))
4648
defaultHeaders["Changeset-Version"] = options.changesetVersion
4749
}
4850
var allHeaders = Object.assign({}, options.headers, defaultHeaders)
@@ -64,13 +66,16 @@ function sendPayload(payload: any, options: SendPayloadOptions) {
6466
.update(postData)
6567
.digest('hex')
6668
var header = "GraphQL::Pro " + clientName + " " + authDigest
67-
if (verbose) {
68-
console.log("[Sync] Header: ", header)
69-
console.log("[Sync] Data:", postData)
70-
}
7169
httpOptions.headers["Authorization"] = header
7270
}
7371

72+
var headerNames = Object.keys(httpOptions.headers)
73+
logger.log("[Sync] " + headerNames.length + " Headers:")
74+
headerNames.forEach((headerName) => {
75+
logger.log("[Sync] " + headerName + ": " + httpOptions.headers[headerName])
76+
})
77+
logger.log("[Sync] Data:", postData)
78+
7479
var httpClient = parsedURL.protocol === "https:" ? https : http
7580
var promise = new Promise(function(resolve, reject) {
7681
// Make the request,
@@ -84,10 +89,8 @@ function sendPayload(payload: any, options: SendPayloadOptions) {
8489
});
8590

8691
res.on("end", () => {
87-
if (verbose) {
88-
console.log("[Sync] Response Headers: ", res.headers)
89-
console.log("[Sync] Response Body: ", body)
90-
}
92+
logger.log("[Sync] Response Headers: ", JSON.stringify(res.headers))
93+
logger.log("[Sync] Response Body: ", body)
9194

9295
var status = res.statusCode
9396
// 422 gets special treatment because

0 commit comments

Comments
 (0)