@@ -894,20 +894,28 @@ pub fn Env(comptime State: type, comptime WebApis: type) type {
894
894
// for this declaration is _a lot_ easier.
895
895
const _JSOBJECT_ID_KLUDGE = true ;
896
896
897
- pub fn setIndex (self : JsObject , index : usize , value : anytype ) ! void {
897
+ const SetOpts = packed struct (u32 ) {
898
+ READ_ONLY : bool = false ,
899
+ DONT_ENUM : bool = false ,
900
+ DONT_DELETE : bool = false ,
901
+ _ : u29 = 0 ,
902
+ };
903
+ pub fn setIndex (self : JsObject , index : u32 , value : anytype , opts : SetOpts ) ! void {
898
904
const key = switch (index ) {
899
905
inline 0... 1000 = > | i | std .fmt .comptimePrint ("{d}" , .{i }),
900
906
else = > try std .fmt .allocPrint (self .scope .scope_arena , "{d}" , .{index }),
901
907
};
902
- return self .set (key , value );
908
+ return self .set (key , value , opts );
903
909
}
904
910
905
- pub fn set (self : JsObject , key : []const u8 , value : anytype ) ! void {
911
+ pub fn set (self : JsObject , key : []const u8 , value : anytype , opts : SetOpts ) ! void {
906
912
const scope = self .scope ;
907
913
908
914
const js_key = v8 .String .initUtf8 (scope .isolate , key );
909
915
const js_value = try scope .zigValueToJs (value );
910
- if (! self .js_obj .setValue (scope .context , js_key , js_value )) {
916
+
917
+ const res = self .js_obj .defineOwnProperty (scope .context , js_key .toName (), js_value , @bitCast (opts )) orelse false ;
918
+ if (! res ) {
911
919
return error .FailedToSet ;
912
920
}
913
921
}
@@ -957,12 +965,12 @@ pub fn Env(comptime State: type, comptime WebApis: type) type {
957
965
958
966
const _JSTHIS_ID_KLUDGE = true ;
959
967
960
- pub fn setIndex (self : JsThis , index : usize , value : anytype ) ! void {
961
- return self .obj .setIndex (index , value );
968
+ pub fn setIndex (self : JsThis , index : u32 , value : anytype , opts : JsObject.SetOpts ) ! void {
969
+ return self .obj .setIndex (index , value , opts );
962
970
}
963
971
964
- pub fn set (self : JsThis , key : []const u8 , value : anytype ) ! void {
965
- return self .obj .set (key , value );
972
+ pub fn set (self : JsThis , key : []const u8 , value : anytype , opts : JsObject.SetOpts ) ! void {
973
+ return self .obj .set (key , value , opts );
966
974
}
967
975
};
968
976
0 commit comments