bare-url 1.1.0 → 1.1.1

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/binding.c CHANGED
@@ -8,17 +8,19 @@
8
8
  #include <utf.h>
9
9
  #include <utf/string.h>
10
10
 
11
+ static js_type_tag_t bare_url__tag = {0x6f1fd92f476698b0, 0x93b59c349143ee50};
12
+
11
13
  static js_value_t *
12
14
  bare_url_parse (js_env_t *env, js_callback_info_t *info) {
13
15
  int err;
14
16
 
15
- size_t argc = 3;
16
- js_value_t *argv[3];
17
+ size_t argc = 5;
18
+ js_value_t *argv[5];
17
19
 
18
20
  err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
19
21
  assert(err == 0);
20
22
 
21
- assert(argc == 3);
23
+ assert(argc == 5);
22
24
 
23
25
  bool has_base;
24
26
  err = js_is_string(env, argv[1], &has_base);
@@ -57,10 +59,6 @@ bare_url_parse (js_env_t *env, js_callback_info_t *info) {
57
59
  err = js_get_value_string_utf8(env, argv[0], input, len, NULL);
58
60
  assert(err == 0);
59
61
 
60
- uint32_t *components;
61
- err = js_get_typedarray_info(env, argv[2], NULL, (void **) &components, NULL, NULL, NULL);
62
- assert(err == 0);
63
-
64
62
  js_value_t *handle;
65
63
 
66
64
  url_t url;
@@ -83,6 +81,19 @@ bare_url_parse (js_env_t *env, js_callback_info_t *info) {
83
81
  err = js_create_string_utf8(env, url.href.data, url.href.len, &href);
84
82
  assert(err == 0);
85
83
 
84
+ bool tag;
85
+ err = js_get_value_bool(env, argv[2], &tag);
86
+ assert(err == 0);
87
+
88
+ if (tag) {
89
+ err = js_add_type_tag(env, argv[3], &bare_url__tag);
90
+ assert(err == 0);
91
+ }
92
+
93
+ uint32_t *components;
94
+ err = js_get_typedarray_info(env, argv[4], NULL, (void **) &components, NULL, NULL, NULL);
95
+ assert(err == 0);
96
+
86
97
  memcpy(components, &url.components, sizeof(url.components));
87
98
 
88
99
  url_destroy(&base);
@@ -159,6 +170,29 @@ bare_url_can_parse (js_env_t *env, js_callback_info_t *info) {
159
170
  return result;
160
171
  }
161
172
 
173
+ static js_value_t *
174
+ bare_url_is_url (js_env_t *env, js_callback_info_t *info) {
175
+ int err;
176
+
177
+ size_t argc = 1;
178
+ js_value_t *argv[1];
179
+
180
+ err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
181
+ assert(err == 0);
182
+
183
+ assert(argc == 1);
184
+
185
+ bool is_url;
186
+ err = js_check_type_tag(env, argv[0], &bare_url__tag, &is_url);
187
+ assert(err == 0);
188
+
189
+ js_value_t *result;
190
+ err = js_get_boolean(env, is_url, &result);
191
+ assert(err == 0);
192
+
193
+ return result;
194
+ }
195
+
162
196
  static js_value_t *
163
197
  bare_url_exports (js_env_t *env, js_value_t *exports) {
164
198
  int err;
@@ -174,6 +208,7 @@ bare_url_exports (js_env_t *env, js_value_t *exports) {
174
208
 
175
209
  V("parse", bare_url_parse)
176
210
  V("canParse", bare_url_can_parse)
211
+ V("isURL", bare_url_is_url)
177
212
  #undef V
178
213
 
179
214
  return exports;
package/index.js CHANGED
@@ -14,7 +14,7 @@ const URL = module.exports = exports = class URL {
14
14
 
15
15
  this._components = new Uint32Array(8)
16
16
 
17
- this._parse(href, base)
17
+ this._parse(href, base, true /* Tag */)
18
18
  }
19
19
 
20
20
  // https://url.spec.whatwg.org/#dom-url-href
@@ -204,9 +204,9 @@ const URL = module.exports = exports = class URL {
204
204
  return this._slice(0, start) + replacement + this._slice(end)
205
205
  }
206
206
 
207
- _parse (href, base) {
207
+ _parse (href, base, tag = false) {
208
208
  try {
209
- this._href = binding.parse(String(href), base ? String(base) : null, this._components)
209
+ this._href = binding.parse(String(href), base ? String(base) : null, tag, this, this._components)
210
210
  } catch (err) {
211
211
  safetyCatch(err)
212
212
 
@@ -216,7 +216,7 @@ const URL = module.exports = exports = class URL {
216
216
 
217
217
  _update (href) {
218
218
  try {
219
- this._parse(href, null)
219
+ this._parse(href, null, false /* Tag */)
220
220
  } catch (err) {
221
221
  safetyCatch(err)
222
222
  }
@@ -236,7 +236,7 @@ function cannotHaveCredentialsOrPort (url) {
236
236
  exports.URL = exports // For Node.js compatibility
237
237
 
238
238
  exports.isURL = function isURL (value) {
239
- return value instanceof URL
239
+ return typeof value === 'object' && value !== null && binding.isURL(value)
240
240
  }
241
241
 
242
242
  exports.canParse = function canParse (href, base) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bare-url",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "WHATWG URL implementation for JavaScript",
5
5
  "main": "index.js",
6
6
  "files": [
Binary file
Binary file
Binary file
Binary file