@@ -952,6 +952,31 @@ typedef void (*jerry_module_state_changed_callback_t) (jerry_module_state_t new_
952
952
**See also**
953
953
- [jerry_module_set_state_changed_callback](#jerry_module_set_state_changed_callback)
954
954
955
+ ## jerry_module_import_meta_callback_t
956
+
957
+ **Summary**
958
+
959
+ Callback which is called when an import.meta expression of a module is evaluated the first time.
960
+ The object returned by import.meta is passed as the `meta_object` argument to the callback, and
961
+ the callback can set the initial status of the object (e.g. add properties or set prototype).
962
+
963
+ **Prototype**
964
+
965
+ ```c
966
+ typedef void (*jerry_module_import_meta_callback_t) (const jerry_value_t module,
967
+ const jerry_value_t meta_object,
968
+ void *user_p);
969
+ ```
970
+
971
+ - `module` - module whose import.meta object is requested.
972
+ - `meta_object` - import.meta object created for the module.
973
+ - `user_p` - pointer passed to [jerry_module_set_import_meta_callback](#jerry_module_set_import_meta_callback).
974
+
975
+ *New in version [[NEXT_RELEASE]]*.
976
+
977
+ **See also**
978
+ - [jerry_module_set_import_meta_callback](#jerry_module_set_import_meta_callback)
979
+
955
980
## jerry_native_module_evaluate_callback_t
956
981
957
982
**Summary**
@@ -4996,13 +5021,12 @@ Sets a callback which is called after a module state is changed to linked, evalu
4996
5021
**Prototype**
4997
5022
4998
5023
```c
4999
- void
5000
- jerry_module_set_state_changed_callback (jerry_module_state_changed_callback_t callback,
5001
- void *user_p)
5024
+ void jerry_module_set_state_changed_callback (jerry_module_state_changed_callback_t callback,
5025
+ void *user_p);
5002
5026
```
5003
5027
5004
5028
- `callback` - callback, which is called after the state change.
5005
- - `module_val ` - pointer passed to the callback function.
5029
+ - `user_p ` - pointer passed to the callback function.
5006
5030
5007
5031
*New in version [[NEXT_RELEASE]]*.
5008
5032
@@ -5060,6 +5084,82 @@ main (void)
5060
5084
- [jerry_module_state_t](#jerry_module_state_t)
5061
5085
- [jerry_module_state_changed_callback_t](#jerry_module_state_changed_callback_t)
5062
5086
5087
+ ## jerry_module_set_import_meta_callback
5088
+
5089
+ **Summary**
5090
+
5091
+ Sets a callback which is called when an import.meta expression of a module is evaluated the first time.
5092
+
5093
+ *Notes*:
5094
+ - This API depends on a build option (`JERRY_MODULE_SYSTEM`) and can be checked
5095
+ in runtime with the `JERRY_FEATURE_MODULE` feature enum value,
5096
+ see: [jerry_is_feature_enabled](#jerry_is_feature_enabled).
5097
+
5098
+ **Prototype**
5099
+
5100
+ ```c
5101
+ void jerry_module_set_import_meta_callback (jerry_module_import_meta_callback_t callback,
5102
+ void *user_p);
5103
+ ```
5104
+
5105
+ - `callback` - callback, which is called when an import.meta
5106
+ expression of a module is evaluated the first time
5107
+ - `user_p` - pointer passed to the callback function.
5108
+
5109
+ *New in version [[NEXT_RELEASE]]*.
5110
+
5111
+ **Example**
5112
+
5113
+ [doctest]: # (test="compile")
5114
+
5115
+ ```c
5116
+ #include <jerryscript.h>
5117
+ #include <stdio.h>
5118
+
5119
+ static void
5120
+ module_import_meta_callback (const jerry_value_t module, /**< module */
5121
+ const jerry_value_t meta_object, /**< import.meta object */
5122
+ void *user_p) /**< user pointer */
5123
+ {
5124
+ (void) user_p;
5125
+
5126
+ /* Create a property for the meta object */
5127
+ jerry_value_t property_name_value = jerry_create_string ((const jerry_char_t *) "prop");
5128
+ jerry_value_t property_value = jerry_create_string ((const jerry_char_t *) "prop");
5129
+ jerry_value_t result_value = jerry_set_property (meta_object, property_name_value, property_value);
5130
+ jerry_release_value (result_value);
5131
+ jerry_release_value (property_value);
5132
+ jerry_release_value (property_name_value);
5133
+ } /* module_import_meta_callback */
5134
+
5135
+ int
5136
+ main (void)
5137
+ {
5138
+ jerry_init (JERRY_INIT_EMPTY);
5139
+
5140
+ const jerry_char_t script[] = "import.meta";
5141
+
5142
+ jerry_module_set_import_meta_callback (module_import_meta_callback, NULL);
5143
+
5144
+ jerry_parse_options_t parse_options;
5145
+ parse_options.options = JERRY_PARSE_MODULE;
5146
+
5147
+ jerry_value_t module_value = jerry_parse (script, sizeof (script) - 1, &parse_options);
5148
+
5149
+ jerry_release_value (jerry_module_link (module_value, NULL, NULL));
5150
+ jerry_release_value (jerry_module_evaluate (module_value));
5151
+
5152
+ jerry_release_value (module_value);
5153
+
5154
+ jerry_cleanup ();
5155
+ return 0;
5156
+ }
5157
+ ```
5158
+
5159
+ **See also**
5160
+
5161
+ - [jerry_module_import_meta_callback_t](#jerry_module_import_meta_callback_t)
5162
+
5063
5163
## jerry_module_get_number_of_requests
5064
5164
5065
5165
**Summary**
0 commit comments