bare-module 1.9.1 → 1.9.2
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 +27 -20
- package/index.js +1 -1
- package/package.json +1 -1
package/binding.c
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
#include <uv.h>
|
|
10
10
|
|
|
11
11
|
typedef struct {
|
|
12
|
+
js_ref_t *ctx;
|
|
12
13
|
js_ref_t *on_import;
|
|
13
14
|
js_ref_t *on_evaluate;
|
|
14
15
|
} bare_module_context_t;
|
|
@@ -19,12 +20,12 @@ on_static_import (js_env_t *env, js_value_t *specifier, js_value_t *assertions,
|
|
|
19
20
|
|
|
20
21
|
int err;
|
|
21
22
|
|
|
22
|
-
js_value_t *
|
|
23
|
-
err = js_get_reference_value(env, context->
|
|
23
|
+
js_value_t *ctx;
|
|
24
|
+
err = js_get_reference_value(env, context->ctx, &ctx);
|
|
24
25
|
assert(err == 0);
|
|
25
26
|
|
|
26
|
-
js_value_t *
|
|
27
|
-
err =
|
|
27
|
+
js_value_t *on_import;
|
|
28
|
+
err = js_get_reference_value(env, context->on_import, &on_import);
|
|
28
29
|
assert(err == 0);
|
|
29
30
|
|
|
30
31
|
const char *name;
|
|
@@ -40,7 +41,7 @@ on_static_import (js_env_t *env, js_value_t *specifier, js_value_t *assertions,
|
|
|
40
41
|
assert(err == 0);
|
|
41
42
|
|
|
42
43
|
js_value_t *result;
|
|
43
|
-
err = js_call_function(env,
|
|
44
|
+
err = js_call_function(env, ctx, on_import, 4, args, &result);
|
|
44
45
|
if (err < 0) return NULL;
|
|
45
46
|
|
|
46
47
|
js_module_t *module;
|
|
@@ -56,12 +57,12 @@ on_dynamic_import (js_env_t *env, js_value_t *specifier, js_value_t *assertions,
|
|
|
56
57
|
|
|
57
58
|
int err;
|
|
58
59
|
|
|
59
|
-
js_value_t *
|
|
60
|
-
err = js_get_reference_value(env, context->
|
|
60
|
+
js_value_t *ctx;
|
|
61
|
+
err = js_get_reference_value(env, context->ctx, &ctx);
|
|
61
62
|
assert(err == 0);
|
|
62
63
|
|
|
63
|
-
js_value_t *
|
|
64
|
-
err =
|
|
64
|
+
js_value_t *on_import;
|
|
65
|
+
err = js_get_reference_value(env, context->on_import, &on_import);
|
|
65
66
|
assert(err == 0);
|
|
66
67
|
|
|
67
68
|
js_value_t *args[4] = {specifier, assertions, referrer};
|
|
@@ -70,7 +71,7 @@ on_dynamic_import (js_env_t *env, js_value_t *specifier, js_value_t *assertions,
|
|
|
70
71
|
assert(err == 0);
|
|
71
72
|
|
|
72
73
|
js_value_t *result;
|
|
73
|
-
err = js_call_function(env,
|
|
74
|
+
err = js_call_function(env, ctx, on_import, 4, args, &result);
|
|
74
75
|
if (err < 0) return NULL;
|
|
75
76
|
|
|
76
77
|
js_module_t *module;
|
|
@@ -86,12 +87,12 @@ on_evaluate (js_env_t *env, js_module_t *module, void *data) {
|
|
|
86
87
|
|
|
87
88
|
int err;
|
|
88
89
|
|
|
89
|
-
js_value_t *
|
|
90
|
-
err = js_get_reference_value(env, context->
|
|
90
|
+
js_value_t *ctx;
|
|
91
|
+
err = js_get_reference_value(env, context->ctx, &ctx);
|
|
91
92
|
assert(err == 0);
|
|
92
93
|
|
|
93
|
-
js_value_t *
|
|
94
|
-
err =
|
|
94
|
+
js_value_t *on_evaluate;
|
|
95
|
+
err = js_get_reference_value(env, context->on_evaluate, &on_evaluate);
|
|
95
96
|
assert(err == 0);
|
|
96
97
|
|
|
97
98
|
const char *name;
|
|
@@ -104,7 +105,7 @@ on_evaluate (js_env_t *env, js_module_t *module, void *data) {
|
|
|
104
105
|
if (err < 0) return;
|
|
105
106
|
|
|
106
107
|
js_value_t *result;
|
|
107
|
-
err = js_call_function(env,
|
|
108
|
+
err = js_call_function(env, ctx, on_evaluate, 1, args, &result);
|
|
108
109
|
if (err < 0) return;
|
|
109
110
|
}
|
|
110
111
|
|
|
@@ -112,13 +113,13 @@ static js_value_t *
|
|
|
112
113
|
bare_module_init (js_env_t *env, js_callback_info_t *info) {
|
|
113
114
|
int err;
|
|
114
115
|
|
|
115
|
-
size_t argc =
|
|
116
|
-
js_value_t *argv[
|
|
116
|
+
size_t argc = 3;
|
|
117
|
+
js_value_t *argv[3];
|
|
117
118
|
|
|
118
119
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
119
120
|
assert(err == 0);
|
|
120
121
|
|
|
121
|
-
assert(argc ==
|
|
122
|
+
assert(argc == 3);
|
|
122
123
|
|
|
123
124
|
bare_module_context_t *context;
|
|
124
125
|
|
|
@@ -126,10 +127,13 @@ bare_module_init (js_env_t *env, js_callback_info_t *info) {
|
|
|
126
127
|
err = js_create_unsafe_arraybuffer(env, sizeof(bare_module_context_t), (void **) &context, &result);
|
|
127
128
|
if (err < 0) return NULL;
|
|
128
129
|
|
|
129
|
-
err = js_create_reference(env, argv[0], 1, &context->
|
|
130
|
+
err = js_create_reference(env, argv[0], 1, &context->ctx);
|
|
131
|
+
assert(err == 0);
|
|
132
|
+
|
|
133
|
+
err = js_create_reference(env, argv[1], 1, &context->on_import);
|
|
130
134
|
assert(err == 0);
|
|
131
135
|
|
|
132
|
-
err = js_create_reference(env, argv[
|
|
136
|
+
err = js_create_reference(env, argv[2], 1, &context->on_evaluate);
|
|
133
137
|
assert(err == 0);
|
|
134
138
|
|
|
135
139
|
err = js_on_dynamic_import(env, on_dynamic_import, (void *) context);
|
|
@@ -160,6 +164,9 @@ bare_module_destroy (js_env_t *env, js_callback_info_t *info) {
|
|
|
160
164
|
err = js_delete_reference(env, context->on_evaluate);
|
|
161
165
|
assert(err == 0);
|
|
162
166
|
|
|
167
|
+
err = js_delete_reference(env, context->ctx);
|
|
168
|
+
assert(err == 0);
|
|
169
|
+
|
|
163
170
|
return NULL;
|
|
164
171
|
}
|
|
165
172
|
|
package/index.js
CHANGED
|
@@ -22,7 +22,7 @@ const Module = module.exports = class Module {
|
|
|
22
22
|
return path.dirname(this.filename)
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
static _context = binding.init(this._onimport
|
|
25
|
+
static _context = binding.init(this, this._onimport, this._onevaluate)
|
|
26
26
|
|
|
27
27
|
static _extensions = Object.create(null)
|
|
28
28
|
static _protocols = Object.create(null)
|