@cords/sdk 0.0.6 → 0.0.8

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/dist/index.d.mts CHANGED
@@ -78,6 +78,8 @@ type SearchOptions = {
78
78
  provincial?: boolean;
79
79
  national?: boolean;
80
80
  };
81
+ calculateProvinceFromSearchString?: boolean;
82
+ calculateCityFromSearchString?: boolean;
81
83
  };
82
84
  type CordsError = {
83
85
  detail: string;
@@ -87,11 +89,13 @@ type CordsError = {
87
89
  };
88
90
 
89
91
  declare const ResourceOptions: {};
90
- declare const CordsAPI: ({ apiKey, version, }: {
92
+ declare const CordsAPI: ({ apiKey, version, referer, baseUrl, }: {
91
93
  apiKey: string;
92
94
  version?: "production" | "dev";
95
+ referer?: string;
96
+ baseUrl?: string;
93
97
  }) => {
94
- search: (q: string, options: SearchOptions) => Promise<{
98
+ search: (q: string, { calculateCityFromSearchString, calculateProvinceFromSearchString, ...options }: SearchOptions) => Promise<{
95
99
  data: SearchResourceType[];
96
100
  meta: {
97
101
  total: number;
package/dist/index.d.ts CHANGED
@@ -78,6 +78,8 @@ type SearchOptions = {
78
78
  provincial?: boolean;
79
79
  national?: boolean;
80
80
  };
81
+ calculateProvinceFromSearchString?: boolean;
82
+ calculateCityFromSearchString?: boolean;
81
83
  };
82
84
  type CordsError = {
83
85
  detail: string;
@@ -87,11 +89,13 @@ type CordsError = {
87
89
  };
88
90
 
89
91
  declare const ResourceOptions: {};
90
- declare const CordsAPI: ({ apiKey, version, }: {
92
+ declare const CordsAPI: ({ apiKey, version, referer, baseUrl, }: {
91
93
  apiKey: string;
92
94
  version?: "production" | "dev";
95
+ referer?: string;
96
+ baseUrl?: string;
93
97
  }) => {
94
- search: (q: string, options: SearchOptions) => Promise<{
98
+ search: (q: string, { calculateCityFromSearchString, calculateProvinceFromSearchString, ...options }: SearchOptions) => Promise<{
95
99
  data: SearchResourceType[];
96
100
  meta: {
97
101
  total: number;
package/dist/index.js CHANGED
@@ -20,6 +20,18 @@ var __spreadValues = (a, b) => {
20
20
  return a;
21
21
  };
22
22
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
+ var __objRest = (source, exclude) => {
24
+ var target = {};
25
+ for (var prop in source)
26
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
27
+ target[prop] = source[prop];
28
+ if (source != null && __getOwnPropSymbols)
29
+ for (var prop of __getOwnPropSymbols(source)) {
30
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
31
+ target[prop] = source[prop];
32
+ }
33
+ return target;
34
+ };
23
35
  var __export = (target, all) => {
24
36
  for (var name in all)
25
37
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -33,26 +45,6 @@ var __copyProps = (to, from, except, desc) => {
33
45
  return to;
34
46
  };
35
47
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
36
- var __async = (__this, __arguments, generator) => {
37
- return new Promise((resolve, reject) => {
38
- var fulfilled = (value) => {
39
- try {
40
- step(generator.next(value));
41
- } catch (e) {
42
- reject(e);
43
- }
44
- };
45
- var rejected = (value) => {
46
- try {
47
- step(generator.throw(value));
48
- } catch (e) {
49
- reject(e);
50
- }
51
- };
52
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
53
- step((generator = generator.apply(__this, __arguments)).next());
54
- });
55
- };
56
48
 
57
49
  // src/index.ts
58
50
  var src_exports = {};
@@ -65,25 +57,34 @@ module.exports = __toCommonJS(src_exports);
65
57
  var ResourceOptions = {};
66
58
  var CordsAPI = ({
67
59
  apiKey,
68
- version = "production"
60
+ version = "production",
61
+ referer,
62
+ baseUrl
69
63
  }) => {
70
- const baseUrl = version === "production" ? "https://api.cords.ai" : "https://api.cords.dev";
71
- const request = (input, init) => __async(void 0, null, function* () {
72
- const res = yield fetch(input, __spreadProps(__spreadValues({}, init), {
73
- headers: __spreadValues({
64
+ baseUrl = baseUrl != null ? baseUrl : version === "production" ? "https://api.cords.ai" : "https://api.cords.dev";
65
+ const request = async (input, init) => {
66
+ const res = await fetch(input, __spreadProps(__spreadValues({}, init), {
67
+ headers: __spreadValues(__spreadValues({
74
68
  "x-api-key": apiKey
75
- }, init == null ? void 0 : init.headers)
69
+ }, referer ? { referer } : {}), init == null ? void 0 : init.headers)
76
70
  }));
77
71
  if (!res.ok) {
78
72
  if (res.status === 403)
79
73
  throw new Error("Bad API key. Ensure you have a valid API key.");
80
- const data = yield res.json();
74
+ const data = await res.json();
81
75
  if (data.detail) throw new Error(data.detail);
82
76
  else throw new Error("An error occurred");
83
77
  }
84
78
  return res;
85
- });
86
- const search = (q, options) => __async(void 0, null, function* () {
79
+ };
80
+ const search = async (q, _a) => {
81
+ var _b = _a, {
82
+ calculateCityFromSearchString = true,
83
+ calculateProvinceFromSearchString = true
84
+ } = _b, options = __objRest(_b, [
85
+ "calculateCityFromSearchString",
86
+ "calculateProvinceFromSearchString"
87
+ ]);
87
88
  const url = new URL("/search", baseUrl);
88
89
  const params = new URLSearchParams({
89
90
  q
@@ -93,6 +94,14 @@ var CordsAPI = ({
93
94
  if (options.page) params.append("page", options.page.toString());
94
95
  if (options.pageSize) params.append("pageSize", options.pageSize.toString());
95
96
  if (options.distance) params.append("distance", options.distance.toString());
97
+ params.append(
98
+ "calculateProvinceFromSearchString",
99
+ calculateProvinceFromSearchString ? "true" : "false"
100
+ );
101
+ params.append(
102
+ "calculateCityFromSearchString",
103
+ calculateCityFromSearchString ? "true" : "false"
104
+ );
96
105
  if (options.partner) {
97
106
  for (const [key, value] of Object.entries(options.partner)) {
98
107
  params.append(`filter[${key}]`, value ? "true" : "false");
@@ -103,31 +112,31 @@ var CordsAPI = ({
103
112
  params.append(`filter[delivery][${key}]`, value ? "true" : "false");
104
113
  }
105
114
  }
106
- const res = yield request(`${url.toString()}?${params}`);
107
- const data = yield res.json();
115
+ const res = await request(`${url.toString()}?${params}`);
116
+ const data = await res.json();
108
117
  return data;
109
- });
110
- const related = (id) => __async(void 0, null, function* () {
118
+ };
119
+ const related = async (id) => {
111
120
  const url = new URL(`/resource/${id}/related`, baseUrl);
112
- const res = yield request(url.toString());
121
+ const res = await request(url.toString());
113
122
  if (!res.ok) {
114
- const data2 = yield res.json();
123
+ const data2 = await res.json();
115
124
  throw new Error(data2.detail);
116
125
  }
117
- const data = yield res.json();
126
+ const data = await res.json();
118
127
  return data;
119
- });
120
- const resource = (id) => __async(void 0, null, function* () {
128
+ };
129
+ const resource = async (id) => {
121
130
  const url = new URL(`/resource/${id}`, baseUrl);
122
- const res = yield request(url.toString());
131
+ const res = await request(url.toString());
123
132
  if (!res.ok) {
124
- const data2 = yield res.json();
133
+ const data2 = await res.json();
125
134
  throw new Error(data2.detail);
126
135
  }
127
- const data = yield res.json();
136
+ const data = await res.json();
128
137
  return data;
129
- });
130
- const resourceList = (ids) => __async(void 0, null, function* () {
138
+ };
139
+ const resourceList = async (ids) => {
131
140
  if (ids.length === 0)
132
141
  return {
133
142
  data: []
@@ -135,24 +144,24 @@ var CordsAPI = ({
135
144
  const params = new URLSearchParams();
136
145
  ids.forEach((id, index) => params.append(`ids[${index}]`, id));
137
146
  const url = new URL(`/search?${params.toString()}`, baseUrl);
138
- const res = yield request(url.toString());
139
- const data = yield res.json();
147
+ const res = await request(url.toString());
148
+ const data = await res.json();
140
149
  return data;
141
- });
142
- const nearestNeighbour = (id, options) => __async(void 0, null, function* () {
150
+ };
151
+ const nearestNeighbour = async (id, options) => {
143
152
  const url = new URL(`/resource/${id}/nearest-neighbor`, baseUrl);
144
153
  const params = new URLSearchParams({
145
154
  lat: options.lat.toString(),
146
155
  lng: options.lng.toString()
147
156
  });
148
- const res = yield request(url.toString() + "?delivery=local&" + params.toString());
157
+ const res = await request(url.toString() + "?delivery=local&" + params.toString());
149
158
  if (!res.ok) {
150
- const data2 = yield res.json();
159
+ const data2 = await res.json();
151
160
  throw new Error(data2.detail);
152
161
  }
153
- const data = yield res.json();
162
+ const data = await res.json();
154
163
  return data;
155
- });
164
+ };
156
165
  return {
157
166
  search,
158
167
  related,
package/dist/index.mjs CHANGED
@@ -17,50 +17,51 @@ var __spreadValues = (a, b) => {
17
17
  return a;
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- var __async = (__this, __arguments, generator) => {
21
- return new Promise((resolve, reject) => {
22
- var fulfilled = (value) => {
23
- try {
24
- step(generator.next(value));
25
- } catch (e) {
26
- reject(e);
27
- }
28
- };
29
- var rejected = (value) => {
30
- try {
31
- step(generator.throw(value));
32
- } catch (e) {
33
- reject(e);
34
- }
35
- };
36
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
37
- step((generator = generator.apply(__this, __arguments)).next());
38
- });
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
39
31
  };
40
32
 
41
33
  // src/index.ts
42
34
  var ResourceOptions = {};
43
35
  var CordsAPI = ({
44
36
  apiKey,
45
- version = "production"
37
+ version = "production",
38
+ referer,
39
+ baseUrl
46
40
  }) => {
47
- const baseUrl = version === "production" ? "https://api.cords.ai" : "https://api.cords.dev";
48
- const request = (input, init) => __async(void 0, null, function* () {
49
- const res = yield fetch(input, __spreadProps(__spreadValues({}, init), {
50
- headers: __spreadValues({
41
+ baseUrl = baseUrl != null ? baseUrl : version === "production" ? "https://api.cords.ai" : "https://api.cords.dev";
42
+ const request = async (input, init) => {
43
+ const res = await fetch(input, __spreadProps(__spreadValues({}, init), {
44
+ headers: __spreadValues(__spreadValues({
51
45
  "x-api-key": apiKey
52
- }, init == null ? void 0 : init.headers)
46
+ }, referer ? { referer } : {}), init == null ? void 0 : init.headers)
53
47
  }));
54
48
  if (!res.ok) {
55
49
  if (res.status === 403)
56
50
  throw new Error("Bad API key. Ensure you have a valid API key.");
57
- const data = yield res.json();
51
+ const data = await res.json();
58
52
  if (data.detail) throw new Error(data.detail);
59
53
  else throw new Error("An error occurred");
60
54
  }
61
55
  return res;
62
- });
63
- const search = (q, options) => __async(void 0, null, function* () {
56
+ };
57
+ const search = async (q, _a) => {
58
+ var _b = _a, {
59
+ calculateCityFromSearchString = true,
60
+ calculateProvinceFromSearchString = true
61
+ } = _b, options = __objRest(_b, [
62
+ "calculateCityFromSearchString",
63
+ "calculateProvinceFromSearchString"
64
+ ]);
64
65
  const url = new URL("/search", baseUrl);
65
66
  const params = new URLSearchParams({
66
67
  q
@@ -70,6 +71,14 @@ var CordsAPI = ({
70
71
  if (options.page) params.append("page", options.page.toString());
71
72
  if (options.pageSize) params.append("pageSize", options.pageSize.toString());
72
73
  if (options.distance) params.append("distance", options.distance.toString());
74
+ params.append(
75
+ "calculateProvinceFromSearchString",
76
+ calculateProvinceFromSearchString ? "true" : "false"
77
+ );
78
+ params.append(
79
+ "calculateCityFromSearchString",
80
+ calculateCityFromSearchString ? "true" : "false"
81
+ );
73
82
  if (options.partner) {
74
83
  for (const [key, value] of Object.entries(options.partner)) {
75
84
  params.append(`filter[${key}]`, value ? "true" : "false");
@@ -80,31 +89,31 @@ var CordsAPI = ({
80
89
  params.append(`filter[delivery][${key}]`, value ? "true" : "false");
81
90
  }
82
91
  }
83
- const res = yield request(`${url.toString()}?${params}`);
84
- const data = yield res.json();
92
+ const res = await request(`${url.toString()}?${params}`);
93
+ const data = await res.json();
85
94
  return data;
86
- });
87
- const related = (id) => __async(void 0, null, function* () {
95
+ };
96
+ const related = async (id) => {
88
97
  const url = new URL(`/resource/${id}/related`, baseUrl);
89
- const res = yield request(url.toString());
98
+ const res = await request(url.toString());
90
99
  if (!res.ok) {
91
- const data2 = yield res.json();
100
+ const data2 = await res.json();
92
101
  throw new Error(data2.detail);
93
102
  }
94
- const data = yield res.json();
103
+ const data = await res.json();
95
104
  return data;
96
- });
97
- const resource = (id) => __async(void 0, null, function* () {
105
+ };
106
+ const resource = async (id) => {
98
107
  const url = new URL(`/resource/${id}`, baseUrl);
99
- const res = yield request(url.toString());
108
+ const res = await request(url.toString());
100
109
  if (!res.ok) {
101
- const data2 = yield res.json();
110
+ const data2 = await res.json();
102
111
  throw new Error(data2.detail);
103
112
  }
104
- const data = yield res.json();
113
+ const data = await res.json();
105
114
  return data;
106
- });
107
- const resourceList = (ids) => __async(void 0, null, function* () {
115
+ };
116
+ const resourceList = async (ids) => {
108
117
  if (ids.length === 0)
109
118
  return {
110
119
  data: []
@@ -112,24 +121,24 @@ var CordsAPI = ({
112
121
  const params = new URLSearchParams();
113
122
  ids.forEach((id, index) => params.append(`ids[${index}]`, id));
114
123
  const url = new URL(`/search?${params.toString()}`, baseUrl);
115
- const res = yield request(url.toString());
116
- const data = yield res.json();
124
+ const res = await request(url.toString());
125
+ const data = await res.json();
117
126
  return data;
118
- });
119
- const nearestNeighbour = (id, options) => __async(void 0, null, function* () {
127
+ };
128
+ const nearestNeighbour = async (id, options) => {
120
129
  const url = new URL(`/resource/${id}/nearest-neighbor`, baseUrl);
121
130
  const params = new URLSearchParams({
122
131
  lat: options.lat.toString(),
123
132
  lng: options.lng.toString()
124
133
  });
125
- const res = yield request(url.toString() + "?delivery=local&" + params.toString());
134
+ const res = await request(url.toString() + "?delivery=local&" + params.toString());
126
135
  if (!res.ok) {
127
- const data2 = yield res.json();
136
+ const data2 = await res.json();
128
137
  throw new Error(data2.detail);
129
138
  }
130
- const data = yield res.json();
139
+ const data = await res.json();
131
140
  return data;
132
- });
141
+ };
133
142
  return {
134
143
  search,
135
144
  related,
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "main": "./dist/index.js",
4
4
  "module": "./dist/index.mjs",
5
5
  "types": "./dist/index.d.ts",
6
- "version": "0.0.6",
6
+ "version": "0.0.8",
7
7
  "private": false,
8
8
  "publishConfig": {
9
9
  "access": "public"
package/src/index.ts CHANGED
@@ -12,17 +12,24 @@ export const ResourceOptions = {};
12
12
  export const CordsAPI = ({
13
13
  apiKey,
14
14
  version = "production",
15
+ referer,
16
+ baseUrl,
15
17
  }: {
16
18
  apiKey: string;
17
19
  version?: "production" | "dev";
20
+ referer?: string;
21
+ baseUrl?: string;
18
22
  }) => {
19
- const baseUrl = version === "production" ? "https://api.cords.ai" : "https://api.cords.dev";
23
+ // Set the base URL for the Cords API
24
+ baseUrl = baseUrl ?? (version === "production" ? "https://api.cords.ai" : "https://api.cords.dev");
20
25
 
26
+ // Helper for making requests to the Cords API that applies the api key, referrer, and handles errors
21
27
  const request = async (input: RequestInfo, init?: RequestInit) => {
22
28
  const res = await fetch(input, {
23
29
  ...init,
24
30
  headers: {
25
31
  "x-api-key": apiKey,
32
+ ...(referer ? { referer } : {}),
26
33
  ...init?.headers,
27
34
  },
28
35
  });
@@ -36,7 +43,15 @@ export const CordsAPI = ({
36
43
  return res;
37
44
  };
38
45
 
39
- const search = async (q: string, options: SearchOptions) => {
46
+ // Search for resources
47
+ const search = async (
48
+ q: string,
49
+ {
50
+ calculateCityFromSearchString = true,
51
+ calculateProvinceFromSearchString = true,
52
+ ...options
53
+ }: SearchOptions
54
+ ) => {
40
55
  const url = new URL("/search", baseUrl);
41
56
  const params = new URLSearchParams({
42
57
  q,
@@ -50,6 +65,16 @@ export const CordsAPI = ({
50
65
  if (options.pageSize) params.append("pageSize", options.pageSize.toString());
51
66
  if (options.distance) params.append("distance", options.distance.toString());
52
67
 
68
+ // Add boolean parameters
69
+ params.append(
70
+ "calculateProvinceFromSearchString",
71
+ calculateProvinceFromSearchString ? "true" : "false"
72
+ );
73
+ params.append(
74
+ "calculateCityFromSearchString",
75
+ calculateCityFromSearchString ? "true" : "false"
76
+ );
77
+
53
78
  // Add partner parameters
54
79
  if (options.partner) {
55
80
  for (const [key, value] of Object.entries(options.partner)) {
@@ -72,6 +97,7 @@ export const CordsAPI = ({
72
97
  };
73
98
  };
74
99
 
100
+ // Get related to a resource
75
101
  const related = async (id: string) => {
76
102
  const url = new URL(`/resource/${id}/related`, baseUrl);
77
103
 
@@ -84,6 +110,7 @@ export const CordsAPI = ({
84
110
  return data as { data: ResourceType[] };
85
111
  };
86
112
 
113
+ // Get a single resource by id
87
114
  const resource = async (id: string) => {
88
115
  const url = new URL(`/resource/${id}`, baseUrl);
89
116
 
@@ -96,6 +123,7 @@ export const CordsAPI = ({
96
123
  return data as ResourceType;
97
124
  };
98
125
 
126
+ // Get a list of resources by id
99
127
  const resourceList = async (ids: string[]): Promise<{ data: ResourceType[] }> => {
100
128
  if (ids.length === 0)
101
129
  return {
@@ -111,6 +139,7 @@ export const CordsAPI = ({
111
139
  return data as { data: ResourceType[] };
112
140
  };
113
141
 
142
+ // Get the nearest neighbour to a resource
114
143
  const nearestNeighbour = async (
115
144
  id: string,
116
145
  options: {
@@ -143,6 +172,7 @@ export const CordsAPI = ({
143
172
  };
144
173
  };
145
174
 
175
+ // Helper function to format a service address
146
176
  export const formatServiceAddress = (address: ResourceAddressType) => {
147
177
  const street1 = address.street1 ? address.street1 + ", " : "";
148
178
  const street2 = address.street2 ? address.street2 + ", " : "";
package/src/types.ts CHANGED
@@ -86,6 +86,8 @@ export type SearchOptions = {
86
86
  provincial?: boolean;
87
87
  national?: boolean;
88
88
  };
89
+ calculateProvinceFromSearchString?: boolean;
90
+ calculateCityFromSearchString?: boolean;
89
91
  };
90
92
 
91
93
  export type CordsError = {
package/tsconfig.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "target": "ES2016",
3
+ "target": "ES2017",
4
4
  "module": "CommonJS",
5
5
  "esModuleInterop": true,
6
6
  "forceConsistentCasingInFileNames": true,