@openfn/language-mssql 2.6.8 → 3.0.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.
Files changed (97) hide show
  1. package/README.md +27 -3
  2. package/ast.json +6 -6
  3. package/lib/Adaptor.js +57 -17
  4. package/node_modules/@azure/ms-rest-azure-env/package.json +2 -2
  5. package/node_modules/@azure/ms-rest-js/node_modules/form-data/package.json +2 -2
  6. package/node_modules/@azure/ms-rest-js/package.json +2 -2
  7. package/node_modules/@azure/ms-rest-nodeauth/package.json +2 -2
  8. package/node_modules/@js-joda/core/package.json +2 -2
  9. package/node_modules/@openfn/language-common/node_modules/axios/package.json +2 -2
  10. package/node_modules/@openfn/language-common/node_modules/follow-redirects/package.json +2 -2
  11. package/node_modules/@openfn/language-common/node_modules/jsonpath-plus/package.json +2 -2
  12. package/node_modules/@openfn/language-common/node_modules/lodash/package.json +2 -2
  13. package/node_modules/@openfn/language-common/package.json +2 -2
  14. package/node_modules/@types/node/package.json +2 -2
  15. package/node_modules/@types/tunnel/package.json +2 -2
  16. package/node_modules/adal-node/node_modules/@types/node/package.json +2 -2
  17. package/node_modules/adal-node/package.json +2 -2
  18. package/node_modules/ajv/package.json +2 -2
  19. package/node_modules/asn1/package.json +2 -2
  20. package/node_modules/assert-plus/package.json +2 -2
  21. package/node_modules/async/package.json +2 -2
  22. package/node_modules/asynckit/package.json +2 -2
  23. package/node_modules/aws-sign2/package.json +2 -2
  24. package/node_modules/aws4/package.json +2 -2
  25. package/node_modules/axios/package.json +2 -2
  26. package/node_modules/bcrypt-pbkdf/package.json +2 -2
  27. package/node_modules/bl/node_modules/readable-stream/package.json +2 -2
  28. package/node_modules/bl/node_modules/string_decoder/package.json +2 -2
  29. package/node_modules/bl/package.json +2 -2
  30. package/node_modules/buffer-equal-constant-time/package.json +2 -2
  31. package/node_modules/caseless/package.json +2 -2
  32. package/node_modules/combined-stream/package.json +2 -2
  33. package/node_modules/core-util-is/package.json +2 -2
  34. package/node_modules/dashdash/package.json +2 -2
  35. package/node_modules/date-utils/package.json +2 -2
  36. package/node_modules/delayed-stream/package.json +2 -2
  37. package/node_modules/depd/package.json +2 -2
  38. package/node_modules/ecc-jsbn/package.json +2 -2
  39. package/node_modules/ecdsa-sig-formatter/package.json +2 -2
  40. package/node_modules/extsprintf/package.json +2 -2
  41. package/node_modules/fast-deep-equal/package.json +2 -2
  42. package/node_modules/fast-json-stable-stringify/package.json +2 -2
  43. package/node_modules/follow-redirects/node_modules/debug/package.json +2 -2
  44. package/node_modules/follow-redirects/package.json +2 -2
  45. package/node_modules/forever-agent/package.json +2 -2
  46. package/node_modules/getpass/package.json +2 -2
  47. package/node_modules/har-schema/package.json +2 -2
  48. package/node_modules/har-validator/package.json +2 -2
  49. package/node_modules/http-signature/package.json +2 -2
  50. package/node_modules/iconv-lite/package.json +2 -2
  51. package/node_modules/inherits/package.json +2 -2
  52. package/node_modules/is-typedarray/package.json +2 -2
  53. package/node_modules/isstream/package.json +2 -2
  54. package/node_modules/jsbi/package.json +2 -2
  55. package/node_modules/jsbn/package.json +2 -2
  56. package/node_modules/json-schema/package.json +2 -2
  57. package/node_modules/json-schema-traverse/package.json +2 -2
  58. package/node_modules/json-stringify-safe/package.json +2 -2
  59. package/node_modules/jsprim/package.json +2 -2
  60. package/node_modules/jwa/package.json +2 -2
  61. package/node_modules/jws/package.json +2 -2
  62. package/node_modules/mime-db/package.json +2 -2
  63. package/node_modules/mime-types/package.json +2 -2
  64. package/node_modules/ms/package.json +2 -2
  65. package/node_modules/native-duplexpair/package.json +2 -2
  66. package/node_modules/oauth-sign/package.json +2 -2
  67. package/node_modules/performance-now/package.json +2 -2
  68. package/node_modules/psl/package.json +2 -2
  69. package/node_modules/punycode/package.json +2 -2
  70. package/node_modules/request/node_modules/extend/package.json +2 -2
  71. package/node_modules/request/node_modules/form-data/package.json +2 -2
  72. package/node_modules/request/node_modules/qs/package.json +2 -2
  73. package/node_modules/request/package.json +2 -2
  74. package/node_modules/safe-buffer/package.json +2 -2
  75. package/node_modules/safer-buffer/package.json +2 -2
  76. package/node_modules/sax/package.json +2 -2
  77. package/node_modules/sprintf-js/package.json +2 -2
  78. package/node_modules/sshpk/package.json +5 -5
  79. package/node_modules/tedious/node_modules/readable-stream/package.json +2 -2
  80. package/node_modules/tedious/node_modules/string_decoder/package.json +2 -2
  81. package/node_modules/tedious/package.json +2 -2
  82. package/node_modules/tough-cookie/node_modules/punycode/package.json +2 -2
  83. package/node_modules/tough-cookie/package.json +2 -2
  84. package/node_modules/tslib/package.json +2 -2
  85. package/node_modules/tunnel/package.json +2 -2
  86. package/node_modules/tunnel-agent/package.json +2 -2
  87. package/node_modules/tweetnacl/package.json +2 -2
  88. package/node_modules/underscore/package.json +2 -2
  89. package/node_modules/uri-js/package.json +2 -2
  90. package/node_modules/util-deprecate/package.json +2 -2
  91. package/node_modules/uuid/package.json +2 -2
  92. package/node_modules/verror/package.json +2 -2
  93. package/node_modules/xml2js/package.json +2 -2
  94. package/node_modules/xmlbuilder/package.json +2 -2
  95. package/node_modules/xmldom/package.json +2 -2
  96. package/node_modules/xpath.js/package.json +2 -2
  97. package/package.json +1 -1
package/README.md CHANGED
@@ -77,6 +77,7 @@ insert(
77
77
  // to NULL. It can be a single string or an array of strings.
78
78
  // It DEFAULTS to "'undefined'", and can be turned off w/ `false`.
79
79
  setNull: "'undefined'",
80
+ logValues: true,
80
81
  }
81
82
  );
82
83
  ```
@@ -95,7 +96,7 @@ upsert(
95
96
  Address: 'Now I can tell!',
96
97
  },
97
98
  // Do NOT replace any instances of 'undefined' in the final SQL statement.
98
- { setNull: false }
99
+ { setNull: false, logValues: true }
99
100
  );
100
101
  ```
101
102
 
@@ -113,7 +114,12 @@ upsertIf(
113
114
  id: 7,
114
115
  },
115
116
  // Replace any occurence of '' and 'undefined' to NULL
116
- { setNull: ["''", "'undefined'"], writeSql: true, execute: false }
117
+ {
118
+ setNull: ["''", "'undefined'"],
119
+ writeSql: true,
120
+ execute: false,
121
+ logValues: true,
122
+ }
117
123
  );
118
124
  ```
119
125
 
@@ -157,10 +163,28 @@ upsertMany(
157
163
  Address: s.address,
158
164
  };
159
165
  }),
160
- { writeSql: true, execute: false }
166
+ { writeSql: true, execute: false, logValues: true }
161
167
  );
162
168
  ```
163
169
 
170
+ In case we need to check on multiple columns before upserting, we can have an array of `uuids`.
171
+
172
+ ```js
173
+ upsertMany(
174
+ 'SomeDB.dbo.Supplier',
175
+ ['SupplierNumber', 'SupplierCode'],
176
+ state =>
177
+ state.data.supplierArray.map(s => {
178
+ return {
179
+ SupplierNumber: s.id,
180
+ Name: s.name,
181
+ Address: s.address,
182
+ SupplierCode: s.code,
183
+ };
184
+ }),
185
+ { writeSql: true, execute: false, logValues: true }
186
+ );
187
+ ```
164
188
 
165
189
  ## Describe a table from mssql
166
190
 
package/ast.json CHANGED
@@ -15,7 +15,7 @@
15
15
  },
16
16
  {
17
17
  "title": "example",
18
- "description": "execute(\n sql(sqlQuery)\n)(state)"
18
+ "description": "sql({ query, options })"
19
19
  },
20
20
  {
21
21
  "title": "constructor",
@@ -105,7 +105,7 @@
105
105
  },
106
106
  {
107
107
  "title": "example",
108
- "description": "execute(\n insert(table, record, {setNull: [\"'undefined'\", \"''\"], logValues: false})\n)(state)"
108
+ "description": "insert(table, record, {setNull: [\"'undefined'\", \"''\"], logValues: false})"
109
109
  },
110
110
  {
111
111
  "title": "constructor",
@@ -169,7 +169,7 @@
169
169
  },
170
170
  {
171
171
  "title": "example",
172
- "description": "execute(\n insertMany(table, records, { setNull: false, writeSql: true, logValues: false })\n)(state)"
172
+ "description": "insertMany(table, records, { setNull: false, writeSql: true, logValues: false })"
173
173
  },
174
174
  {
175
175
  "title": "constructor",
@@ -234,7 +234,7 @@
234
234
  },
235
235
  {
236
236
  "title": "example",
237
- "description": "execute(\n upsert(table, uuid, record, { setNull: \"'undefined'\", logValues: false})\n)(state)"
237
+ "description": "upsert(table, uuid, record, { setNull: \"'undefined'\", logValues: false})\nupsert(table, [uuid1, uuid2], record, { setNull: \"'undefined'\", logValues: false})"
238
238
  },
239
239
  {
240
240
  "title": "constructor",
@@ -309,7 +309,7 @@
309
309
  },
310
310
  {
311
311
  "title": "example",
312
- "description": "upsertIf(\n dataValue('name'),\n 'users', // the DB table\n 'ON CONSTRAINT users_pkey', // a DB column with a unique constraint OR a CONSTRAINT NAME\n { name: 'Elodie', id: 7 },\n { writeSql:true, execute: true, logValues: false }\n)"
312
+ "description": "upsertIf(\n dataValue('name'),\n 'users', // the DB table\n 'uuid', // a DB column with a unique constraint\n { name: 'Elodie', id: 7 },\n { writeSql:true, execute: true, logValues: false }\n)"
313
313
  },
314
314
  {
315
315
  "title": "constructor",
@@ -392,7 +392,7 @@
392
392
  },
393
393
  {
394
394
  "title": "example",
395
- "description": "upsertMany(\n 'users', 'email', records, { logValues: false }\n)"
395
+ "description": "upsertMany(\n 'users', 'email', records, { logValues: false }\n)\nupsertMany(\n 'users', ['email', 'phone'], records, { logValues: false }\n)"
396
396
  },
397
397
  {
398
398
  "title": "constructor",
package/lib/Adaptor.js CHANGED
@@ -254,6 +254,20 @@ function flattenRows(state, rows) {
254
254
  });
255
255
  }
256
256
 
257
+ function composeNextState(state, rows) {
258
+ var obj = {};
259
+ rows.forEach(function (row) {
260
+ row.forEach(function (col) {
261
+ obj[col.metadata.colName] = col.value;
262
+ });
263
+ });
264
+ return _objectSpread(_objectSpread({}, state), {}, {
265
+ response: {
266
+ body: obj
267
+ }
268
+ });
269
+ }
270
+
257
271
  function queryHandler(state, query, callback, options) {
258
272
  var connection = state.connection;
259
273
  return new Promise(function (resolve, reject) {
@@ -286,9 +300,7 @@ function queryHandler(state, query, callback, options) {
286
300
  * Execute an SQL statement
287
301
  * @public
288
302
  * @example
289
- * execute(
290
- * sql(sqlQuery)
291
- * )(state)
303
+ * sql({ query, options })
292
304
  * @constructor
293
305
  * @param {object} params - Payload data for the message
294
306
  * @returns {Operation}
@@ -305,7 +317,7 @@ function sql(params) {
305
317
  options = _expandReferences.options;
306
318
 
307
319
  console.log("Preparing to execute sql statement: ".concat(query));
308
- return queryHandler(state, query, flattenRows, options);
320
+ return queryHandler(state, query, composeNextState, options);
309
321
  } catch (e) {
310
322
  connection.close();
311
323
  throw e;
@@ -419,9 +431,7 @@ function findValue(filter) {
419
431
  * Insert a record
420
432
  * @public
421
433
  * @example
422
- * execute(
423
- * insert(table, record, {setNull: ["'undefined'", "''"], logValues: false})
424
- * )(state)
434
+ * insert(table, record, {setNull: ["'undefined'", "''"], logValues: false})
425
435
  * @constructor
426
436
  * @param {string} table - The target table
427
437
  * @param {object} record - Payload data for the record as a JS object
@@ -457,9 +467,7 @@ function insert(table, record, options) {
457
467
  * Insert many records, using the keys of the first as the column template
458
468
  * @public
459
469
  * @example
460
- * execute(
461
- * insertMany(table, records, { setNull: false, writeSql: true, logValues: false })
462
- * )(state)
470
+ * insertMany(table, records, { setNull: false, writeSql: true, logValues: false })
463
471
  * @constructor
464
472
  * @param {string} table - The target table
465
473
  * @param {function} records - A function that takes state and returns an array of records
@@ -496,9 +504,8 @@ function insertMany(table, records, options) {
496
504
  * Insert or update a record using SQL MERGE
497
505
  * @public
498
506
  * @example
499
- * execute(
500
- * upsert(table, uuid, record, { setNull: "'undefined'", logValues: false})
501
- * )(state)
507
+ * upsert(table, uuid, record, { setNull: "'undefined'", logValues: false})
508
+ * upsert(table, [uuid1, uuid2], record, { setNull: "'undefined'", logValues: false})
502
509
  * @constructor
503
510
  * @param {string} table - The target table
504
511
  * @param {string} uuid - The uuid column to determine a matching/existing record
@@ -525,7 +532,17 @@ function upsert(table, uuid, record, options) {
525
532
  var insertValues = columns.map(function (key) {
526
533
  return "[Source].".concat(key);
527
534
  }).join(', ');
528
- var query = handleValues("MERGE ".concat(table, " AS [Target]\n USING (SELECT ").concat(selectValues, ") AS [Source] \n ON [Target].").concat(uuid, " = [Source].").concat(uuid, "\n WHEN MATCHED THEN\n UPDATE SET ").concat(updateValues, " \n WHEN NOT MATCHED THEN\n INSERT (").concat(insertColumns, ") VALUES (").concat(insertValues, ");"), handleOptions(options));
535
+ var constraint = [];
536
+
537
+ if (Array.isArray(uuid)) {
538
+ uuid.forEach(function (key) {
539
+ constraint.push("[Target].".concat(key, " = [Source].").concat(key));
540
+ });
541
+ } else {
542
+ constraint.push("[Target].".concat(uuid, " = [Source].").concat(uuid));
543
+ }
544
+
545
+ var query = handleValues("MERGE ".concat(table, " AS [Target]\n USING (SELECT ").concat(selectValues, ") AS [Source] \n ON ").concat(constraint.join(' AND '), "\n WHEN MATCHED THEN\n UPDATE SET ").concat(updateValues, " \n WHEN NOT MATCHED THEN\n INSERT (").concat(insertColumns, ") VALUES (").concat(insertValues, ");"), handleOptions(options));
529
546
  var safeQuery = "MERGE ".concat(table, " AS [Target]\n USING (SELECT [--REDACTED--]) \n ON [Target].[--VALUE--] = [Source].[--VALUE--]\n WHEN MATCHED THEN\n UPDATE SET [--REDACTED--] \n WHEN NOT MATCHED THEN\n INSERT (").concat(insertColumns, ") VALUES [--REDACTED--];");
530
547
  return new Promise(function (resolve, reject) {
531
548
  var queryToLog = options && options.logValues ? query : safeQuery;
@@ -545,7 +562,7 @@ function upsert(table, uuid, record, options) {
545
562
  * upsertIf(
546
563
  * dataValue('name'),
547
564
  * 'users', // the DB table
548
- * 'ON CONSTRAINT users_pkey', // a DB column with a unique constraint OR a CONSTRAINT NAME
565
+ * 'uuid', // a DB column with a unique constraint
549
566
  * { name: 'Elodie', id: 7 },
550
567
  * { writeSql:true, execute: true, logValues: false }
551
568
  * )
@@ -584,7 +601,17 @@ function upsertIf(logical, table, uuid, record, options) {
584
601
  var insertValues = columns.map(function (key) {
585
602
  return "[Source].".concat(key);
586
603
  }).join(', ');
587
- var query = handleValues("MERGE ".concat(table, " AS [Target]\n USING (SELECT ").concat(selectValues, ") AS [Source] \n ON [Target].").concat(uuid, " = [Source].").concat(uuid, "\n WHEN MATCHED THEN\n UPDATE SET ").concat(updateValues, " \n WHEN NOT MATCHED THEN\n INSERT (").concat(insertColumns, ") VALUES (").concat(insertValues, ");"), handleOptions(options));
604
+ var constraint = [];
605
+
606
+ if (Array.isArray(uuid)) {
607
+ uuid.forEach(function (key) {
608
+ constraint.push("[Target].".concat(key, " = [Source].").concat(key));
609
+ });
610
+ } else {
611
+ constraint.push("[Target].".concat(uuid, " = [Source].").concat(uuid));
612
+ }
613
+
614
+ var query = handleValues("MERGE ".concat(table, " AS [Target]\n USING (SELECT ").concat(selectValues, ") AS [Source] \n ON ").concat(constraint.join(' AND '), "\n WHEN MATCHED THEN\n UPDATE SET ").concat(updateValues, " \n WHEN NOT MATCHED THEN\n INSERT (").concat(insertColumns, ") VALUES (").concat(insertValues, ");"), handleOptions(options));
588
615
  var safeQuery = "MERGE ".concat(table, " AS [Target]\n USING (SELECT [--REDACTED--]) \n ON [Target].[--VALUE--] = [Source].[--VALUE--]\n WHEN MATCHED THEN\n UPDATE SET [--REDACTED--] \n WHEN NOT MATCHED THEN\n INSERT (").concat(insertColumns, ") VALUES [--REDACTED--];");
589
616
  var queryToLog = options && options.logValues ? query : safeQuery;
590
617
  console.log("Executing upsertIf via: ".concat(queryToLog));
@@ -603,6 +630,9 @@ function upsertIf(logical, table, uuid, record, options) {
603
630
  * upsertMany(
604
631
  * 'users', 'email', records, { logValues: false }
605
632
  * )
633
+ * upsertMany(
634
+ * 'users', ['email', 'phone'], records, { logValues: false }
635
+ * )
606
636
  * @constructor
607
637
  * @param {string} table - The target table
608
638
  * @param {string} uuid - The uuid column to determine a matching/existing record
@@ -636,7 +666,17 @@ function upsertMany(table, uuid, records, options) {
636
666
  var updateValues = columns.map(function (key) {
637
667
  return "[Target].".concat(key, "=[Source].").concat(key);
638
668
  }).join(', ');
639
- var query = handleValues("MERGE ".concat(table, " AS [Target]\n USING (VALUES ").concat(valueSets.join(', '), ") AS [Source] (").concat(insertColumns, ")\n ON [Target].").concat(uuid, " = [Source].").concat(uuid, "\n WHEN MATCHED THEN\n UPDATE SET ").concat(updateValues, "\n WHEN NOT MATCHED THEN\n INSERT (").concat(insertColumns, ") VALUES (").concat(insertValues, ");"), handleOptions(options));
669
+ var constraint = [];
670
+
671
+ if (Array.isArray(uuid)) {
672
+ uuid.forEach(function (key) {
673
+ constraint.push("[Target].".concat(key, " = [Source].").concat(key));
674
+ });
675
+ } else {
676
+ constraint.push("[Target].".concat(uuid, " = [Source].").concat(uuid));
677
+ }
678
+
679
+ var query = handleValues("MERGE ".concat(table, " AS [Target]\n USING (VALUES ").concat(valueSets.join(', '), ") AS [Source] (").concat(insertColumns, ")\n ON ").concat(constraint.join(' AND '), "\n WHEN MATCHED THEN\n UPDATE SET ").concat(updateValues, "\n WHEN NOT MATCHED THEN\n INSERT (").concat(insertColumns, ") VALUES (").concat(insertValues, ");"), handleOptions(options));
640
680
  var safeQuery = "MERGE ".concat(table, " AS [Target]\n USING (VALUES [--REDACTED--]) AS [SOURCE] (").concat(insertColumns, ")\n ON [Target].[--VALUE--] = [Source].[--VALUE--]\n WHEN MATCHED THEN\n UPDATE SET [--REDACTED--] \n WHEN NOT MATCHED THEN\n INSERT (").concat(insertColumns, ") VALUES [--REDACTED--];");
641
681
  var queryToLog = options && options.logValues ? query : safeQuery;
642
682
  console.log("Executing upsertMany via: ".concat(queryToLog));
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "@azure/ms-rest-azure-env@1.1.2",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "@azure/ms-rest-azure-env@1.1.2",
@@ -27,7 +27,7 @@
27
27
  ],
28
28
  "_resolved": "https://registry.npmjs.org/@azure/ms-rest-azure-env/-/ms-rest-azure-env-1.1.2.tgz",
29
29
  "_spec": "1.1.2",
30
- "_where": "/workspaces/devtools/adaptors/language-mssql",
30
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
31
31
  "author": {
32
32
  "name": "Microsoft Corporation",
33
33
  "email": "azsdkteam@microsoft.com",
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "form-data@2.5.1",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "form-data@2.5.1",
@@ -26,7 +26,7 @@
26
26
  ],
27
27
  "_resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
28
28
  "_spec": "2.5.1",
29
- "_where": "/workspaces/devtools/adaptors/language-mssql",
29
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
30
30
  "author": {
31
31
  "name": "Felix Geisendörfer",
32
32
  "email": "felix@debuggable.com",
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "@azure/ms-rest-js@1.8.14",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "@azure/ms-rest-js@1.8.14",
@@ -31,7 +31,7 @@
31
31
  ],
32
32
  "_resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-1.8.14.tgz",
33
33
  "_spec": "1.8.14",
34
- "_where": "/workspaces/devtools/adaptors/language-mssql",
34
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
35
35
  "author": {
36
36
  "name": "Microsoft Corporation",
37
37
  "email": "azsdkteam@microsoft.com",
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "@azure/ms-rest-nodeauth@2.0.2",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "@azure/ms-rest-nodeauth@2.0.2",
@@ -27,7 +27,7 @@
27
27
  ],
28
28
  "_resolved": "https://registry.npmjs.org/@azure/ms-rest-nodeauth/-/ms-rest-nodeauth-2.0.2.tgz",
29
29
  "_spec": "2.0.2",
30
- "_where": "/workspaces/devtools/adaptors/language-mssql",
30
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
31
31
  "author": {
32
32
  "name": "Microsoft Corporation",
33
33
  "email": "azsdkteam@microsoft.com",
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "@js-joda/core@1.12.0",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "@js-joda/core@1.12.0",
@@ -27,7 +27,7 @@
27
27
  ],
28
28
  "_resolved": "https://registry.npmjs.org/@js-joda/core/-/core-1.12.0.tgz",
29
29
  "_spec": "1.12.0",
30
- "_where": "/workspaces/devtools/adaptors/language-mssql",
30
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
31
31
  "author": {
32
32
  "name": "pithu"
33
33
  },
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "axios@0.21.1",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "axios@0.21.1",
@@ -25,7 +25,7 @@
25
25
  ],
26
26
  "_resolved": false,
27
27
  "_spec": "0.21.1",
28
- "_where": "/workspaces/devtools/adaptors/language-mssql",
28
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
29
29
  "author": {
30
30
  "name": "Matt Zabriskie"
31
31
  },
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "follow-redirects@1.13.1",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "follow-redirects@1.13.1",
@@ -25,7 +25,7 @@
25
25
  ],
26
26
  "_resolved": false,
27
27
  "_spec": "1.13.1",
28
- "_where": "/workspaces/devtools/adaptors/language-mssql",
28
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
29
29
  "author": {
30
30
  "name": "Ruben Verborgh",
31
31
  "email": "ruben@verborgh.org",
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "jsonpath-plus@4.0.0",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "jsonpath-plus@4.0.0",
@@ -25,7 +25,7 @@
25
25
  ],
26
26
  "_resolved": false,
27
27
  "_spec": "4.0.0",
28
- "_where": "/workspaces/devtools/adaptors/language-mssql",
28
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
29
29
  "author": {
30
30
  "name": "Stefan Goessner"
31
31
  },
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "lodash@4.17.21",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "lodash@4.17.21",
@@ -25,7 +25,7 @@
25
25
  ],
26
26
  "_resolved": false,
27
27
  "_spec": "4.17.21",
28
- "_where": "/workspaces/devtools/adaptors/language-mssql",
28
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
29
29
  "author": {
30
30
  "name": "John-David Dalton",
31
31
  "email": "john.david.dalton@gmail.com"
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "@openfn/language-common@1.4.1",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "@openfn/language-common@1.4.1",
@@ -27,7 +27,7 @@
27
27
  ],
28
28
  "_resolved": "https://registry.npmjs.org/@openfn/language-common/-/language-common-1.4.1.tgz",
29
29
  "_spec": "1.4.1",
30
- "_where": "/workspaces/devtools/adaptors/language-mssql",
30
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
31
31
  "author": {
32
32
  "name": "Open Function Group"
33
33
  },
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "@types/node@13.5.0",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "@types/node@13.5.0",
@@ -27,7 +27,7 @@
27
27
  ],
28
28
  "_resolved": "https://registry.npmjs.org/@types/node/-/node-13.5.0.tgz",
29
29
  "_spec": "13.5.0",
30
- "_where": "/workspaces/devtools/adaptors/language-mssql",
30
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
31
31
  "bugs": {
32
32
  "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
33
33
  },
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "@types/tunnel@0.0.0",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "@types/tunnel@0.0.0",
@@ -27,7 +27,7 @@
27
27
  ],
28
28
  "_resolved": "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.0.tgz",
29
29
  "_spec": "0.0.0",
30
- "_where": "/workspaces/devtools/adaptors/language-mssql",
30
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
31
31
  "bugs": {
32
32
  "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
33
33
  },
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "@types/node@8.10.59",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "@types/node@8.10.59",
@@ -27,7 +27,7 @@
27
27
  ],
28
28
  "_resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.59.tgz",
29
29
  "_spec": "8.10.59",
30
- "_where": "/workspaces/devtools/adaptors/language-mssql",
30
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
31
31
  "bugs": {
32
32
  "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
33
33
  },
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "adal-node@0.1.28",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "adal-node@0.1.28",
@@ -26,7 +26,7 @@
26
26
  ],
27
27
  "_resolved": "https://registry.npmjs.org/adal-node/-/adal-node-0.1.28.tgz",
28
28
  "_spec": "0.1.28",
29
- "_where": "/workspaces/devtools/adaptors/language-mssql",
29
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
30
30
  "author": {
31
31
  "name": "Microsoft Open Technologies Inc",
32
32
  "email": "msopentech@microsoft.com",
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "ajv@6.11.0",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "ajv@6.11.0",
@@ -26,7 +26,7 @@
26
26
  ],
27
27
  "_resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz",
28
28
  "_spec": "6.11.0",
29
- "_where": "/workspaces/devtools/adaptors/language-mssql",
29
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
30
30
  "author": {
31
31
  "name": "Evgeny Poberezkin"
32
32
  },
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "asn1@0.2.4",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "asn1@0.2.4",
@@ -26,7 +26,7 @@
26
26
  ],
27
27
  "_resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
28
28
  "_spec": "0.2.4",
29
- "_where": "/workspaces/devtools/adaptors/language-mssql",
29
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
30
30
  "author": {
31
31
  "name": "Joyent",
32
32
  "url": "joyent.com"
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "assert-plus@1.0.0",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "assert-plus@1.0.0",
@@ -31,7 +31,7 @@
31
31
  ],
32
32
  "_resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
33
33
  "_spec": "1.0.0",
34
- "_where": "/workspaces/devtools/adaptors/language-mssql",
34
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
35
35
  "author": {
36
36
  "name": "Mark Cavage",
37
37
  "email": "mcavage@gmail.com"
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "async@1.5.2",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "async@1.5.2",
@@ -27,7 +27,7 @@
27
27
  ],
28
28
  "_resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
29
29
  "_spec": "1.5.2",
30
- "_where": "/workspaces/devtools/adaptors/language-mssql",
30
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
31
31
  "author": {
32
32
  "name": "Caolan McMahon"
33
33
  },
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "asynckit@0.4.0",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "asynckit@0.4.0",
@@ -27,7 +27,7 @@
27
27
  ],
28
28
  "_resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
29
29
  "_spec": "0.4.0",
30
- "_where": "/workspaces/devtools/adaptors/language-mssql",
30
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
31
31
  "author": {
32
32
  "name": "Alex Indigo",
33
33
  "email": "iam@alexindigo.com"
@@ -2,7 +2,7 @@
2
2
  "_args": [
3
3
  [
4
4
  "aws-sign2@0.7.0",
5
- "/workspaces/devtools/adaptors/language-mssql"
5
+ "/Users/taylor/devtools/adaptors/language-mssql"
6
6
  ]
7
7
  ],
8
8
  "_from": "aws-sign2@0.7.0",
@@ -26,7 +26,7 @@
26
26
  ],
27
27
  "_resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
28
28
  "_spec": "0.7.0",
29
- "_where": "/workspaces/devtools/adaptors/language-mssql",
29
+ "_where": "/Users/taylor/devtools/adaptors/language-mssql",
30
30
  "author": {
31
31
  "name": "Mikeal Rogers",
32
32
  "email": "mikeal.rogers@gmail.com",