@@ -10,182 +10,217 @@ if (!dir) {
1010const NodeApiVersion = require ( '../package.json' ) . version ;
1111
1212var ConfigFileOperations = {
13- // ex. String::Utf8Value str(info[0]) to Napi::String str(env, info[0])
1413 'package.json' : [
15- [ / " n a n " : * " [ ^ " ] + " / g, '"node-api": "' + NodeApiVersion + '"' ] ,
14+ [ / " n a n " : * " [ ^ " ] + " / g, '"node-addon- api": "' + NodeApiVersion + '"' ]
1615 ] ,
17- // TODO: Add 'cflags!': [ '-fno-exceptions' ],
18- // 'cflags_cc!': [ '-fno-exceptions' ]
1916 'binding.gyp' : [
20- [ / n o d e - e \\ " r e q u i r e \( ' n a n ' \) \\ " / g, 'node -p \\"require(\'node-api\').include\\"' ] ,
17+ [ / \( n o d e - e \\ ( " | ' ) r e q u i r e \( ( " | ' ) n a n ( " | ' ) \) \\ ( " | ' ) \) / g, '@(node -p \\$1require(\$2node-addon-api\$3).include\\$4)' ] ,
18+ [ / ( " | ' ) t a r g e t _ n a m e ( " | ' ) : ( " | ' ) ( .+ ?) ( " | ' ) , / g, '$1target_name$2: $3$4$5,\n $1cflags!$1: [ $1-fno-exceptions$1 ],\n $1cflags_cc!$1: [ $1-fno-exceptions$1 ],' ] ,
2119 ]
2220} ;
2321
2422var SourceFileOperations = [
25- [ / L o c a l < F u n c t i o n T e m p l a t e > \s + ( \w + ) \s * = \s * N a n : : N e w < F u n c t i o n T e m p l a t e > \( [ \w : ] + \) ; (?: \w + - > R e s e t \( \1\) ) ? \s + \1- > S e t C l a s s N a m e \( N a n : : N e w \( " ( \w + ) " \) \) ; / g, 'Napi::Function $1 = DefineClass(env, "$2", {' ] ,
26- [ / v 8 : : L o c a l < v 8 : F u n c t i o n T e m p l a t e > \s + ( \w + ) \s * = \s * N a n : : N e w < v 8 : : F u n c t i o n T e m p l a t e > \( [ \w : ] + \) ; (?: \w + - > R e s e t \( \1\) ) ? \s + \1- > S e t C l a s s N a m e \( N a n : : N e w \( " ( \w + ) " \) \) ; / gm, 'Napi::Function $1 = DefineClass(env, "$2", {' ] ,
27- [ / N a n : : S e t P r o t o t y p e M e t h o d \( \w + , " ( \w + ) " , ( \w + ) \) ; / g, ' InstanceMethod("$1", &$2),' ] ,
28- [ / (?: \w + \. R e s e t \( \w + \) ; \s + ) ? \( t a r g e t \) \. S e t \( " ( \w + ) " , \s * N a n : : G e t F u n c t i o n \( ( \w + ) \) \) ; / gm,
23+ [ / v 8 : : L o c a l < v 8 : : F u n c t i o n T e m p l a t e > \s + ( \w + ) \s * = \s * N a n : : N e w < F u n c t i o n T e m p l a t e > \( [ \w \d : ] + \) ; (?: \w + - > R e s e t \( \1\) ) ? \s + \1- > S e t C l a s s N a m e \( N a n : : S t r i n g : : N e w \( " ( \w + ) " \) \) ; / g, 'Napi::Function $1 = DefineClass(env, "$2", {' ] ,
24+ [ / L o c a l < F u n c t i o n T e m p l a t e > \s + ( \w + ) \s * = \s * N a n : : N e w < F u n c t i o n T e m p l a t e > \( [ \w \d : ] + \) ; \s + ( \w + ) \. R e s e t \( ( \1) \) ; \s + \1- > S e t C l a s s N a m e \( ( N a n : : S t r i n g : : N e w | N a n : : N e w < ( v 8 : : ) * S t r i n g > ) \( " ( .+ ?) " \) \) ; / g, 'Napi::Function $1 = DefineClass(env, "$6", {' ] ,
25+ [ / L o c a l < F u n c t i o n T e m p l a t e > \s + ( \w + ) \s * = \s * N a n : : N e w < F u n c t i o n T e m p l a t e > \( [ \w \d : ] + \) ; (?: \w + - > R e s e t \( \1\) ) ? \s + \1- > S e t C l a s s N a m e \( N a n : : S t r i n g : : N e w \( " ( \w + ) " \) \) ; / g, 'Napi::Function $1 = DefineClass(env, "$2", {' ] ,
26+ [ / N a n : : N e w < v 8 : : F u n c t i o n T e m p l a t e > \( ( [ \w \d : ] + ) \) - > G e t F u n c t i o n \( \) / g, 'Napi::Function::New(env, $1)' ] ,
27+ [ / N a n : : N e w < F u n c t i o n T e m p l a t e > \( ( [ \w \d : ] + ) \) - > G e t F u n c t i o n ( ) / g, 'Napi::Function::New(env, $1);' ] ,
28+ [ / N a n : : N e w < v 8 : : F u n c t i o n T e m p l a t e > \( ( [ \w \d : ] + ) \) / g, 'Napi::Function::New(env, $1)' ] ,
29+ [ / N a n : : N e w < F u n c t i o n T e m p l a t e > \( ( [ \w \d : ] + ) \) / g, 'Napi::Function::New(env, $1)' ] ,
30+
31+ // FunctionTemplate to FunctionReference
32+ [ / N a n : : P e r s i s t e n t < ( v 8 : : ) * F u n c t i o n T e m p l a t e > / g, 'Napi::FunctionReference' ] ,
33+ [ / N a n : : P e r s i s t e n t < ( v 8 : : ) * F u n c t i o n > / g, 'Napi::FunctionReference' ] ,
34+ [ / v 8 : : L o c a l < v 8 : : F u n c t i o n T e m p l a t e > / g, 'Napi::FunctionReference' ] ,
35+ [ / L o c a l < F u n c t i o n T e m p l a t e > / g, 'Napi::FunctionReference' ] ,
36+ [ / v 8 : : F u n c t i o n T e m p l a t e / g, 'Napi::FunctionReference' ] ,
37+ [ / F u n c t i o n T e m p l a t e / g, 'Napi::FunctionReference' ] ,
38+
39+
40+ [ / N a n : : S e t P r o t o t y p e M e t h o d \( \w + , " ( \w + ) " , ( \w + ) \) ; / g, ' InstanceMethod("$1", &$2),' ] ,
41+ [ / (?: \w + \. R e s e t \( \w + \) ; \s + ) ? \( t a r g e t \) \. S e t \( " ( \w + ) " , \s * N a n : : G e t F u n c t i o n \( ( \w + ) \) \) ; / gm,
2942 '});\n\n' +
3043 ' constructor = Napi::Persistent($2);\n' +
3144 ' constructor.SuppressDestruct();\n' +
32- ' target.Set("$1", $2);' ] ,
33- [ / c o n s t r u c t o r _ t e m p l a t e / g, 'constructor' ] ,
45+ ' target.Set("$1", $2);' ] ,
3446
35- [ / ( [ \w : ] + ?) : : C a s t \( ( .+ ?) \) / g, '$2.As<$1>()' ] ,
3647
37- [ / \* N a n : : U t f 8 S t r i n g \( ( [ ^ ) ] + ) \) / g, '$1->As<Napi::String>().Utf8Value().c_str()' ] ,
38- [ / N a n : : U t f 8 S t r i n g + ( \w + ) \( ( [ ^ ) ] + ) \) / g, 'std::string $1 = $2.As<Napi::String>()' ] ,
39- [ / N a n : : U t f 8 S t r i n g / g, 'std::string' ] ,
40-
41- [ / v 8 : : S t r i n g : : U t f 8 V a l u e ( .+ ?) \( ( .+ ?) \) / g, 'Napi::String $1(env, $2)' ] ,
42- [ / S t r i n g : : U t f 8 V a l u e ( .+ ?) \( ( .+ ?) \) / g, 'Napi::String $1(env, $2)' ] ,
43- [ / \. l e n g t h \( \) / g, '.Length()' ] ,
48+ // TODO: Other attribute combinations
49+ [ / s t a t i c _ c a s t < P r o p e r t y A t t r i b u t e > \( R e a d O n l y \s * \| \s * D o n t D e l e t e \) / gm,
50+ 'static_cast<napi_property_attributes>(napi_enumerable | napi_configurable)' ] ,
4451
45- [ / N a n : : M a k e C a l l b a c k \( ( [ ^ , ] + ) , [ \s \\ ] + ( [ ^ , ] + ) , / gm , '$2.MakeCallback($1,' ] ,
52+ [ / ( [ \w \d : < > ] + ? ) : : C a s t \( ( . + ? ) \) / g , '$2.As<$1>()' ] ,
4653
47- [ / c l a s s \s + ( \w + ) \s * : \s * p u b l i c \s + N a n : : O b j e c t W r a p / g, 'class $1 : public Napi::ObjectWrap<$1>' ] ,
48- [ / ( \w + ) \( ( [ ^ \) ] * ) \) \s * : \s * N a n : : O b j e c t W r a p \( \) \s * ( , ) ? / gm, '$1($2) : Napi::ObjectWrap<$1>()$3' ] ,
54+ [ / \* N a n : : U t f 8 S t r i n g \( ( [ ^ ) ] + ) \) / g, '$1->As<Napi::String>().Utf8Value().c_str()' ] ,
55+ [ / N a n : : U t f 8 S t r i n g + ( \w + ) \( ( [ ^ ) ] + ) \) / g, 'std::string $1 = $2.As<Napi::String>()' ] ,
56+ [ / N a n : : U t f 8 S t r i n g / g, 'std::string' ] ,
4957
50- // HandleOKCallback to OnOK
51- [ / H a n d l e O K C a l l b a c k / g, 'OnOK' ] ,
52- // HandleErrorCallback to OnError
53- [ / H a n d l e E r r o r C a l l b a c k / g, 'OnError' ] ,
58+ [ / v 8 : : S t r i n g : : U t f 8 V a l u e ( .+ ?) \( ( .+ ?) \) / g, 'Napi::String $1(env, $2)' ] ,
59+ [ / S t r i n g : : U t f 8 V a l u e ( .+ ?) \( ( .+ ?) \) / g, 'Napi::String $1(env, $2)' ] ,
60+ [ / \. l e n g t h \( \) / g, '.Length()' ] ,
5461
62+ [ / N a n : : M a k e C a l l b a c k \( ( [ ^ , ] + ) , [ \s \\ ] + ( [ ^ , ] + ) , / gm, '$2.MakeCallback($1,' ] ,
5563
56- [ / N a n : : C a l l b a c k / g, 'Napi::Function' ] ,
57- [ / N a n : : P e r s i s t e n t < ( v 8 : : ) * F u n c t i o n T e m p l a t e > / g, 'Napi::FunctionReference' ] ,
58- [ / N a n : : P e r s i s t e n t < ( v 8 : : ) * F u n c t i o n > / g, 'Napi::FunctionReference' ] ,
59- [ / N a n : : P e r s i s t e n t < ( v 8 : : ) * O b j e c t > / g, 'Napi::ObjectReference' ] ,
60- [ / ( v 8 : : ) * P e r s i s t e n t < ( v 8 : : ) * F u n c t i o n T e m p l a t e > / g, 'Napi::FunctionReference' ] ,
61- [ / ( v 8 : : ) * P e r s i s t e n t < ( v 8 : : ) * F u n c t i o n > / g, 'Napi::FunctionReference' ] ,
62- [ / ( v 8 : : ) * P e r s i s t e n t < ( v 8 : : ) * O b j e c t > / g, 'Napi::FunctionReference' ] ,
63- [ / N a n : : A D D O N _ R E G I S T E R _ F U N C T I O N _ A R G S _ T Y P E t a r g e t / g, 'Napi::Env& env, Napi::Object& target' ] ,
64- [ / v 8 : : F u n c t i o n T e m p l a t e / g, 'Napi::FunctionReference' ] ,
65- [ / F u n c t i o n T e m p l a t e / g, 'Napi::FunctionReference' ] ,
64+ [ / c l a s s \s + ( \w + ) \s * : \s * p u b l i c \s + N a n : : O b j e c t W r a p / g, 'class $1 : public Napi::ObjectWrap<$1>' ] ,
65+ [ / ( \w + ) \( ( [ ^ \) ] * ) \) \s * : \s * N a n : : O b j e c t W r a p \( \) \s * ( , ) ? / gm, '$1($2) : Napi::ObjectWrap<$1>()$3' ] ,
6666
67+ // HandleOKCallback to OnOK
68+ [ / H a n d l e O K C a l l b a c k / g, 'OnOK' ] ,
69+ // HandleErrorCallback to OnError
70+ [ / H a n d l e E r r o r C a l l b a c k / g, 'OnError' ] ,
6771
68- // ex. Local<Value> to Napi::Value
69- [ / v 8 : : L o c a l < v 8 : : ( V a l u e | B o o l e a n | S t r i n g | N u m b e r | O b j e c t | A r r a y | S y m b o l | E x t e r n a l | F u n c t i o n ) > / g, 'Napi::$1' ] ,
70- [ / L o c a l < ( V a l u e | B o o l e a n | S t r i n g | N u m b e r | O b j e c t | A r r a y | S y m b o l | E x t e r n a l | F u n c t i o n ) > / g, 'Napi::$1' ] ,
71- [ / v 8 : : ( V a l u e | B o o l e a n | S t r i n g | N u m b e r | O b j e c t | A r r a y | S y m b o l | E x t e r n a l | F u n c t i o n ) / g, 'Napi::$1' ] ,
7272 // ex. .As<Function>() to .As<Napi::Object>()
73- [ / \. A s < v 8 : : ( V a l u e | B o o l e a n | S t r i n g | N u m b e r | O b j e c t | A r r a y | S y m b o l | E x t e r n a l | F u n c t i o n ) > \( \) / g, '.As<Napi::$1>()' ] ,
74- [ / \. A s < ( V a l u e | B o o l e a n | S t r i n g | N u m b e r | O b j e c t | A r r a y | S y m b o l | E x t e r n a l | F u n c t i o n ) > \( \) / g, '.As<Napi::$1>()' ] ,
73+ [ / \. A s < v 8 : : ( V a l u e | B o o l e a n | S t r i n g | N u m b e r | O b j e c t | A r r a y | S y m b o l | E x t e r n a l | F u n c t i o n ) > \( \) / g, '.As<Napi::$1>()' ] ,
74+ [ / \. A s < ( V a l u e | B o o l e a n | S t r i n g | N u m b e r | O b j e c t | A r r a y | S y m b o l | E x t e r n a l | F u n c t i o n ) > \( \) / g, '.As<Napi::$1>()' ] ,
7575
7676 // ex. Nan::New<Number>(info[0]) to Napi::Number::New(info[0])
77- [ / N a n : : N e w < I n t e g e r > \( ( .+ ?) \) / g, 'Napi::Number::New(env, $1)' ] ,
78- [ / N a n : : N e w \( ( [ 0 - 9 \. ] + ) \) / g, 'Napi::Number::New(env, $1)' ] ,
79- [ / N a n : : N e w \( " ( .+ ?) " \) / g, 'Napi::String::New(env, "$1")' ] ,
80- [ / N a n : : N e w < ( .+ ?) > \( \) / g, 'Napi::$1::New(env)' ] ,
81- [ / N a n : : N e w < ( .+ ?) > \( / g, 'Napi::$1::New(env, ' ] ,
82- [ / N a n : : N e w B u f f e r \( / g, 'Napi::Buffer<char>::New(env, ' ] ,
77+ [ / N a n : : N e w < ( v 8 : : ) * I n t e g e r > \( ( .+ ?) \) / g, 'Napi::Number::New(env, $2)' ] ,
78+ [ / N a n : : N e w \( ( [ 0 - 9 \. ] + ) \) / g, 'Napi::Number::New(env, $1)' ] ,
79+ [ / N a n : : N e w < ( v 8 : : ) * S t r i n g > \( " ( .+ ?) " \) / g, 'Napi::String::New(env, "$2")' ] ,
80+ [ / N a n : : N e w \( " ( .+ ?) " \) / g, 'Napi::String::New(env, "$1")' ] ,
81+ [ / N a n : : N e w < ( v 8 : : ) * ( .+ ?) > \( \) / g, 'Napi::$2::New(env)' ] ,
82+ [ / N a n : : N e w < ( .+ ?) > \( \) / g, 'Napi::$1::New(env)' ] ,
83+ [ / N a n : : N e w < ( v 8 : : ) * ( .+ ?) > \( / g, 'Napi::$2::New(env, ' ] ,
84+ [ / N a n : : N e w < ( .+ ?) > \( / g, 'Napi::$1::New(env, ' ] ,
85+ [ / N a n : : N e w B u f f e r \( / g, 'Napi::Buffer<char>::New(env, ' ] ,
8386 // TODO: Properly handle this
84- [ / N a n : : N e w \( / g, 'Napi::New(env, ' ] ,
85-
86- [ / .I s I n t 3 2 \( \) / g, '.IsNumber()' ] ,
87-
87+ [ / N a n : : N e w \( / g, 'Napi::New(env, ' ] ,
8888
89- // ex. Nan::To<bool>(info[0]) to info[0].Value()
90- [ / N a n : : T o < ( B o o l e a n | S t r i n g | N u m b e r | O b j e c t | A r r a y | S y m b o l | F u n c t i o n ) > \( ( .+ ?) \) / g, '$2.To<Napi::$1>()' ] ,
91- [ / N a n : : T o < v 8 : : ( B o o l e a n | S t r i n g | N u m b e r | O b j e c t | A r r a y | S y m b o l | F u n c t i o n ) > \( ( .+ ?) \) / g, '$2.To<Napi::$1>()' ] ,
92- // ex. Nan::To<bool>(info[0]) to info[0].Value()
93- [ / N a n : : T o < b o o l > \( ( .+ ?) \) / g, '$1.As<Napi::Boolean>().Value()' ] ,
94- // ex. Nan::To<int>(info[0]) to info[0].Int32Value()
95- [ / N a n : : T o < i n t > \( ( .+ ?) \) / g, '$1.As<Napi::Number>().Int32Value()' ] ,
96- // ex. Nan::To<int32_t>(info[0]) to info[0].Int32Value()
97- [ / N a n : : T o < i n t 3 2 _ t > \( ( .+ ?) \) / g, '$1.As<Napi::Number>().Int32Value()' ] ,
98- // ex. Nan::To<uint32_t>(info[0]) to info[0].Uint32Value()
99- [ / N a n : : T o < u i n t 3 2 _ t > \( ( .+ ?) \) / g, '$1.As<Napi::Number>().Uint32Value()' ] ,
100- // ex. Nan::To<int64_t>(info[0]) to info[0].Int64Value()
101- [ / N a n : : T o < i n t 6 4 _ t > \( ( .+ ?) \) / g, '$1.As<Napi::Number>().Int64Value()' ] ,
102- // ex. Nan::To<float>(info[0]) to info[0].FloatValue()
103- [ / N a n : : T o < f l o a t > \( ( .+ ?) \) / g, '$1.As<Napi::Number>().FloatValue()' ] ,
104- // ex. Nan::To<double>(info[0]) to info[0].DoubleValue()
105- [ / N a n : : T o < d o u b l e > \( ( .+ ?) \) / g, '$1.As<Napi::Number>().DoubleValue()' ] ,
89+ [ / \. I s I n t 3 2 \( \) / g, '.IsNumber()' ] ,
90+ [ / - > I s I n t 3 2 \( \) / g, '.IsNumber()' ] ,
10691
107- [ / N a n : : N e w \( ( \w + ) \) - > H a s I n s t a n c e \( ( \w + ) \) / g, '$2.InstanceOf($1.Value())' ] ,
10892
109- [ / N a n : : G e t \( ( [ ^ ) ] + ) , \s * / gm, '($1).Get(' ] ,
110- [ / \. G e t \( [ \s | \\ ] * N a n : : N e w \( ( [ ^ ) ] + ) \) \) / gm, '.Get($1)' ] ,
93+ [ / ( .+ ?) - > B o o l e a n V a l u e \( \) / g, '$1.As<Napi::Boolean>().BooleanValue()' ] ,
94+ [ / ( .+ ?) - > I n t 3 2 V a l u e \( \) / g, '$1.As<Napi::Number>().Int32Value()' ] ,
95+ [ / ( .+ ?) - > U i n t 3 2 V a l u e \( \) / g, '$1.As<Napi::Number>().Uint32Value()' ] ,
96+ [ / ( .+ ?) - > I n t e g e r V a l u e \( \) / g, '$1.As<Napi::Number>().Int64Value()' ] ,
97+ [ / ( .+ ?) - > N u m b e r V a l u e \( \) / g, '$1.As<Napi::Number>().DoubleValue()' ] ,
11198
112- [ / N a n : : S e t \( ( [ ^ , ] + ) , \s * / gm, '($1).Set(' ] ,
113- [ / \. S e t \( [ \s | \\ ] * N a n : : N e w \( ( [ ^ ) ] + ) \) , / gm, '.Set($1,' ] ,
99+ // ex. Nan::To<bool>(info[0]) to info[0].Value()
100+ [ / N a n : : T o < v 8 : : ( B o o l e a n | S t r i n g | N u m b e r | O b j e c t | A r r a y | S y m b o l | F u n c t i o n ) > \( ( .+ ?) \) / g, '$2.To<Napi::$1>()' ] ,
101+ [ / N a n : : T o < ( B o o l e a n | S t r i n g | N u m b e r | O b j e c t | A r r a y | S y m b o l | F u n c t i o n ) > \( ( .+ ?) \) / g, '$2.To<Napi::$1>()' ] ,
102+ // ex. Nan::To<bool>(info[0]) to info[0].As<Napi::Boolean>().Value()
103+ [ / N a n : : T o < b o o l > \( ( .+ ?) \) / g, '$1.As<Napi::Boolean>().Value()' ] ,
104+ // ex. Nan::To<int>(info[0]) to info[0].As<Napi::Number>().Int32Value()
105+ [ / N a n : : T o < i n t > \( ( .+ ?) \) / g, '$1.As<Napi::Number>().Int32Value()' ] ,
106+ // ex. Nan::To<int32_t>(info[0]) to info[0].As<Napi::Number>().Int32Value()
107+ [ / N a n : : T o < i n t 3 2 _ t > \( ( .+ ?) \) / g, '$1.As<Napi::Number>().Int32Value()' ] ,
108+ // ex. Nan::To<uint32_t>(info[0]) to info[0].As<Napi::Number>().Uint32Value()
109+ [ / N a n : : T o < u i n t 3 2 _ t > \( ( .+ ?) \) / g, '$1.As<Napi::Number>().Uint32Value()' ] ,
110+ // ex. Nan::To<int64_t>(info[0]) to info[0].As<Napi::Number>().Int64Value()
111+ [ / N a n : : T o < i n t 6 4 _ t > \( ( .+ ?) \) / g, '$1.As<Napi::Number>().Int64Value()' ] ,
112+ // ex. Nan::To<float>(info[0]) to info[0].As<Napi::Number>().FloatValue()
113+ [ / N a n : : T o < f l o a t > \( ( .+ ?) \) / g, '$1.As<Napi::Number>().FloatValue()' ] ,
114+ // ex. Nan::To<double>(info[0]) to info[0].As<Napi::Number>().DoubleValue()
115+ [ / N a n : : T o < d o u b l e > \( ( .+ ?) \) / g, '$1.As<Napi::Number>().DoubleValue()' ] ,
116+
117+ [ / N a n : : N e w \( ( \w + ) \) - > H a s I n s t a n c e \( ( \w + ) \) / g, '$2.InstanceOf($1.Value())' ] ,
118+
119+ [ / N a n : : H a s \( ( [ ^ , ] + ) , \s * / gm, '($1).Has(' ] ,
120+ [ / \. H a s \( [ \s | \\ ] * N a n : : N e w < ( v 8 : : ) * S t r i n g > \( ( [ ^ ) ] + ) \) \) / gm, '.Has($1)' ] ,
121+ [ / \. H a s \( [ \s | \\ ] * N a n : : N e w \( ( [ ^ ) ] + ) \) \) / gm, '.Has($1)' ] ,
122+
123+ [ / N a n : : G e t \( ( [ ^ , ] + ) , \s * / gm, '($1).Get(' ] ,
124+ [ / \. G e t \( [ \s | \\ ] * N a n : : N e w < ( v 8 : : ) * S t r i n g > \( ( [ ^ ) ] + ) \) \) / gm, '.Get($1)' ] ,
125+ [ / \. G e t \( [ \s | \\ ] * N a n : : N e w \( ( [ ^ ) ] + ) \) \) / gm, '.Get($1)' ] ,
126+
127+ [ / N a n : : S e t \( ( [ ^ , ] + ) , \s * / gm, '($1).Set(' ] ,
128+ [ / \. S e t \( [ \s | \\ ] * N a n : : N e w < ( v 8 : : ) * S t r i n g > \( ( [ ^ ) ] + ) \) \s * , / gm, '.Set($1,' ] ,
129+ [ / \. S e t \( [ \s | \\ ] * N a n : : N e w \( ( [ ^ ) ] + ) \) \s * , / gm, '.Set($1,' ] ,
114130
115131
116132 // ex. node::Buffer::HasInstance(info[0]) to info[0].IsBuffer()
117- [ / n o d e : : B u f f e r : : H a s I n s t a n c e \( ( .+ ?) \) / g, '$1.IsBuffer()' ] ,
133+ [ / n o d e : : B u f f e r : : H a s I n s t a n c e \( ( .+ ?) \) / g, '$1.IsBuffer()' ] ,
118134 // ex. node::Buffer::Length(info[0]) to info[0].Length()
119- [ / n o d e : : B u f f e r : : L e n g t h \( ( .+ ?) \) / g, '$1.As<Napi::Buffer<char>>().Length()' ] ,
135+ [ / n o d e : : B u f f e r : : L e n g t h \( ( .+ ?) \) / g, '$1.As<Napi::Buffer<char>>().Length()' ] ,
120136 // ex. node::Buffer::Data(info[0]) to info[0].Data()
121- [ / n o d e : : B u f f e r : : D a t a \( ( .+ ?) \) / g, '$1.As<Napi::Buffer<char>>().Data()' ] ,
122- [ / N a n : : C o p y B u f f e r \( / g, 'Napi::Buffer::Copy(env, ' ] ,
137+ [ / n o d e : : B u f f e r : : D a t a \( ( .+ ?) \) / g, '$1.As<Napi::Buffer<char>>().Data()' ] ,
138+ [ / N a n : : C o p y B u f f e r \( / g, 'Napi::Buffer::Copy(env, ' ] ,
123139
124140 // Nan::AsyncQueueWorker(worker)
125- [ / N a n : : A s y n c Q u e u e W o r k e r \( ( .+ ) \) ; / g, '$1.Queue();' ] ,
126- [ / N a n : : ( U n d e f i n e d | N u l l | T r u e | F a l s e ) \( \) / g, 'env.$1()' ] ,
141+ [ / N a n : : A s y n c Q u e u e W o r k e r \( ( .+ ) \) ; / g, '$1.Queue();' ] ,
142+ [ / N a n : : ( U n d e f i n e d | N u l l | T r u e | F a l s e ) \( \) / g, 'env.$1()' ] ,
127143
128144 // Nan::ThrowError(error) to Napi::Error::New(env, error).ThrowAsJavaScriptException()
129- [ / N a n : : T h r o w ( \w * ?) E r r o r \( ( .+ ?) \) ; / g, 'Napi::$1Error::New(env, $2).ThrowAsJavaScriptException();' ] ,
145+ [ / r e t u r n N a n : : T h r o w ( \w * ?) E r r o r \( ( .+ ?) \) ; / g, 'Napi::$1Error::New(env, $2).ThrowAsJavaScriptException();\n return env.Null();' ] ,
146+ [ / N a n : : T h r o w ( \w * ?) E r r o r \( ( .+ ?) \) ; / g, 'Napi::$1Error::New(env, $2).ThrowAsJavaScriptException();\n return env.Null();' ] ,
130147 // Nan::RangeError(error) to Napi::RangeError::New(env, error)
131- [ / N a n : : ( \w * ?) E r r o r \( ( .+ ) \) / g, 'Napi::$1Error::New(env, $2)' ] ,
148+ [ / N a n : : ( \w * ?) E r r o r \( ( .+ ) \) / g, 'Napi::$1Error::New(env, $2)' ] ,
132149
133- [ / N a n : : S e t \( ( .+ ?) , \n * * ( .+ ?) , \n * * ( .+ ?) , \n * * ( .+ ?) \) / g, '$1.Set($2, $3, $4)' ] ,
150+ [ / N a n : : S e t \( ( .+ ?) , \n * * ( .+ ?) , \n * * ( .+ ?) , \n * * ( .+ ?) \) / g, '$1.Set($2, $3, $4)' ] ,
134151
135- [ / i n f o \[ ( \w + ) \] - > / g, 'info[$1].' ] ,
136- [ / i n f o \. T h i s \( \) - > / g, 'info.This().' ] ,
137- [ / - > I s ( O b j e c t | S t r i n g | I n t 3 2 | N u m b e r ) \( \) / g, '.Is$1()' ] ,
138- [ / i n f o \. G e t R e t u r n V a l u e \( \) \. S e t \( ( ( \n | .) + ?) \) ; / g, 'return $1;' ] ,
152+ [ / N a n : : ( E s c a p a b l e ) ? H a n d l e S c o p e \s + ( \w + ) \s * ; / g, 'Napi::$1HandleScope $2(env);' ] ,
153+ [ / N a n : : ( E s c a p a b l e ) ? H a n d l e S c o p e / g, 'Napi::$1HandleScope' ] ,
154+ [ / N a n : : F o r c e S e t \( ( [ ^ , ] + ) , ? / g, '$1->DefineProperty(' ] ,
155+ [ / \. F o r c e S e t \( N a p i : : S t r i n g : : N e w \( e n v , " ( \w + ) " \) , \s * ?/ g, '.DefineProperty("$1", ' ] ,
156+ // [ /Nan::GetPropertyNames\(([^,]+)\)/, '$1->GetPropertyNames()' ],
157+ [ / N a n : : E q u a l s \( ( [ ^ , ] + ) , / g, '$1.StrictEquals(' ] ,
139158
140- [ / N a n : : ( E s c a p a b l e ) ? H a n d l e S c o p e \s + ( \w + ) \s * ; / g, 'Napi::$1HandleScope $2(env);' ] ,
141- [ / N a n : : ( E s c a p a b l e ) ? H a n d l e S c o p e / g, 'Napi::$1HandleScope' ] ,
142- [ / N a n : : F o r c e S e t \( ( [ ^ , ] + ) , ? / g, '$1->DefineProperty(' ] ,
143- [ / \. F o r c e S e t \( N a p i : : S t r i n g : : N e w \( e n v , " ( \w + ) " \) , \s * ?/ g, '.DefineProperty("$1", ' ] ,
144- // [/Nan::GetPropertyNames\(([^,]+)\)/, '$1->GetPropertyNames()'],
145- [ / N a n : : E q u a l s \( ( [ ^ , ] + ) , / g, '$1.Equals(' ] ,
146159
147160
161+ [ / N a n : : C a l l b a c k / g, 'Napi::FunctionReference' ] ,
148162
149- [ / ( \w + ) \* \s + ( \w + ) \s * = \s * N a n : : O b j e c t W r a p : : U n w r a p < \w + > \( i n f o \. T h i s \( \) \) ; / g, '$1* $2 = this;' ] ,
150- [ / N a n : : O b j e c t W r a p : : U n w r a p < ( \w + ) > \( ( .* ) \) ; / g, '$2.Unwrap<$1>();' ] ,
151163
152- [ / s t a t i c \s * N A N _ M E T H O D \s * \( ( \w + ?) \) \s * { / g, 'Napi::Value $1(const Napi::CallbackInfo& info) {\n Napi::Env env = info.Env();' ] ,
153- [ / N A N _ M E T H O D \s * \( ( \w + ?) \) \s * { / g, 'Napi::Value $1(const Napi::CallbackInfo& info) {\n Napi::Env env = info.Env();' ] ,
154- [ / s t a t i c \s * N A N _ G E T T E R \s * \( ( \w + ?) \) \s * { / g, 'Napi::Value $1(const Napi::CallbackInfo& info) {\n Napi::Env env = info.Env();' ] ,
155- [ / N A N _ G E T T E R \s * \( ( \w + ?) \) \s * { / g, 'Napi::Value $1(const Napi::CallbackInfo& info) {\n Napi::Env env = info.Env();' ] ,
156- [ / s t a t i c \s * N A N _ S E T T E R \s * \( ( \w + ?) \) \s * { / g, 'Napi::Value $1(const Napi::CallbackInfo& info, const Napi::Value& value) {\n Napi::Env env = info.Env();' ] ,
157- [ / N A N _ S E T T E R \s * \( ( \w + ?) \) \s * { / g, 'Napi::Value $1(const Napi::CallbackInfo& info, const Napi::Value& value) {\n Napi::Env env = info.Env();' ] ,
158- [ / N A N _ M O D U L E _ I N I T \s * \( ( [ \w : ] + ?) \) / g, 'void $1(Napi::Env env, Napi::Object exports, Napi::Object module)' ] ,
159- [ / N a n : : N A N _ M E T H O D _ A R G S _ T Y P E / g, 'const Napi::CallbackInfo&' ] ,
160- [ / ( N a n : : ) * F u n c t i o n C a l l b a c k I n f o < ( .+ ?) * > & * / g, 'Napi::CallbackInfo&' ] ,
161- [ / : : ( I n i t (?: i a l i z e ) ? ) \( t a r g e t \) / g, '::$1(env, target, module)' ] ,
164+ [ / N a n : : P e r s i s t e n t < O b j e c t > / g, 'Napi::ObjectReference' ] ,
165+ [ / N a n : : A D D O N _ R E G I S T E R _ F U N C T I O N _ A R G S _ T Y P E t a r g e t / g, 'Napi::Env& env, Napi::Object& target' ] ,
162166
163- // TODO: Other attribute combinations
164- [ / s t a t i c _ c a s t < P r o p e r t y A t t r i b u t e > \( R e a d O n l y \s * \| \s * D o n t D e l e t e \) / gm,
165- 'static_cast<napi_property_attributes>(napi_enumerable | napi_configurable)' ] ,
167+ [ / ( \w + ) \* \s + ( \w + ) \s * = \s * N a n : : O b j e c t W r a p : : U n w r a p < \w + > \( i n f o \. T h i s \( \) \) ; / g, '$1* $2 = this;' ] ,
168+ [ / N a n : : O b j e c t W r a p : : U n w r a p < ( \w + ) > \( ( .* ) \) ; / g, '$2.Unwrap<$1>();' ] ,
169+
170+ [ / N a n : : N A N _ M E T H O D _ A R G S _ T Y P E / g, 'const Napi::CallbackInfo&' ] ,
171+ [ / N A N _ M E T H O D \( ( [ \w \d : ] + ?) \) / g, 'Napi::Value $1(const Napi::CallbackInfo& info)' ] ,
172+ [ / s t a t i c \s * N A N _ G E T T E R \( ( [ \w \d : ] + ?) \) / g, 'Napi::Value $1(const Napi::CallbackInfo& info)' ] ,
173+ [ / N A N _ G E T T E R \( ( [ \w \d : ] + ?) \) / g, 'Napi::Value $1(const Napi::CallbackInfo& info)' ] ,
174+ [ / s t a t i c \s * N A N _ S E T T E R \( ( [ \w \d : ] + ?) \) / g, 'void $1(const Napi::CallbackInfo& info, const Napi::Value& value)' ] ,
175+ [ / N A N _ S E T T E R \( ( [ \w \d : ] + ?) \) / g, 'void $1(const Napi::CallbackInfo& info, const Napi::Value& value)' ] ,
176+ [ / v o i d I n i t \( ( v 8 : : ) * L o c a l < ( v 8 : : ) * O b j e c t > e x p o r t s \) / g, [
177+ [ / e x p o r t s - > / g, 'exports.' ] ,
178+ [ / v o i d I n i t \( ( v 8 : : ) * L o c a l < ( v 8 : : ) * O b j e c t > e x p o r t s \) / g, 'void Init(Napi::Env env, Napi::Object exports, Napi::Object module)' ] ,
179+ ] ] ,
180+ [ / N A N _ M O D U L E _ I N I T \( ( [ \w \d : ] + ?) \) ; / g, 'void $1(Napi::Env env, Napi::Object exports, Napi::Object module);' ] ,
181+ [ / N A N _ M O D U L E _ I N I T \( ( [ \w \d : ] + ?) \) / g, 'void $1(Napi::Env env, Napi::Object exports, Napi::Object module)' ] ,
182+
183+ [ / : : ( I n i t (?: i a l i z e ) ? ) \( t a r g e t \) / g, '::$1(env, target, module)' ] ,
184+ [ / c o n s t r u c t o r _ t e m p l a t e / g, 'constructor' ] ,
185+
186+ [ / N a n : : F u n c t i o n C a l l b a c k I n f o < ( v 8 : : ) * V a l u e > \s * & \s * i n f o \) \s * { / g, 'Napi::CallbackInfo& info) {\n Napi::Env env = info.Env();' ] ,
187+
188+
189+ [ / i n f o \[ ( \d + ) \] - > / g, 'info[$1].' ] ,
190+ [ / i n f o \[ ( [ \w \d ] + ) \] - > / g, 'info[$1].' ] ,
191+ [ / i n f o \. T h i s \( \) - > / g, 'info.This().' ] ,
192+ [ / - > I s ( O b j e c t | S t r i n g | I n t 3 2 | N u m b e r ) \( \) / g, '.Is$1()' ] ,
193+ [ / i n f o .G e t R e t u r n V a l u e \( \) .S e t U n d e f i n e d \( \) / g, 'return env.Undefined()' ] ,
194+ [ / i n f o \. G e t R e t u r n V a l u e \( \) \. S e t \( ( ( \n | .) + ?) \) ; / g, 'return $1;' ] ,
195+
196+
197+ // ex. Local<Value> to Napi::Value
198+ [ / v 8 : : L o c a l < v 8 : : ( V a l u e | B o o l e a n | S t r i n g | N u m b e r | O b j e c t | A r r a y | S y m b o l | E x t e r n a l | F u n c t i o n ) > / g, 'Napi::$1' ] ,
199+ [ / L o c a l < ( V a l u e | B o o l e a n | S t r i n g | N u m b e r | O b j e c t | A r r a y | S y m b o l | E x t e r n a l | F u n c t i o n ) > / g, 'Napi::$1' ] ,
166200
167201 // Declare an env in helper functions that take a Napi::Value
168- [ / ( \w + ) \( N a p i : : V a l u e ( \w + ) ( , \s * [ ^ \( ) ] + ) ? \) \s * { / g, '$1(Napi::Value $2$3) {\n Napi::Env env = $2.Env();' ] ,
202+ [ / ( \w + ) \( N a p i : : V a l u e ( \w + ) ( , \s * [ ^ \( ) ] + ) ? \) \s * { / g, '$1(Napi::Value $2$3) {\n Napi::Env env = $2.Env();' ] ,
169203
170204 // delete #include <node.h> and/or <v8.h>
171- [ / # i n c l u d e + ( < | " ) (?: n o d e | n a n ) .h ( " | > ) / g, "#include $1napi.h$2\n#include $1uv.h$2" ] ,
205+ [ / # i n c l u d e + ( < | " ) (?: n o d e | n a n ) .h ( " | > ) / g, "#include $1napi.h$2\n#include $1uv.h$2" ] ,
172206 // NODE_MODULE to NODE_API_MODULE
173- [ / N O D E _ M O D U L E / g, 'NODE_API_MODULE' ] ,
174- [ / N a n : : / g, 'Napi::' ] ,
175- [ / n a n .h / g, 'napi.h' ] ,
207+ [ / N O D E _ M O D U L E / g, 'NODE_API_MODULE' ] ,
208+ [ / N a n : : / g, 'Napi::' ] ,
209+ [ / n a n .h / g, 'napi.h' ] ,
176210
177211 // delete .FromJust()
178- [ / \. F r o m J u s t \( \) / g, '' ] ,
212+ [ / \. F r o m J u s t \( \) / g, '' ] ,
179213 // delete .ToLocalCheck()
180- [ / \. T o L o c a l C h e c k e d \( \) / g, '' ] ,
181- [ / ^ .* - > S e t I n t e r n a l F i e l d C o u n t \( .* $ / gm, '' ] ,
214+ [ / \. T o L o c a l C h e c k e d \( \) / g, '' ] ,
215+ [ / ^ .* - > S e t I n t e r n a l F i e l d C o u n t \( .* $ / gm, '' ] ,
182216
183217 // replace using node; and/or using v8; to using Napi;
184- [ / u s i n g ( n o d e | v 8 ) ; / g, 'using Napi;' ] ,
185- // delete using v8::XXX;
186- [ / u s i n g v 8 : : L o c a l ; \n / g, '' ] ,
187- // delete using v8::XXX;
188- [ / u s i n g v 8 : : ( [ A - Z a - z ] + ) ; / g, 'using Napi::$1;' ] ,
218+ [ / u s i n g ( n o d e | v 8 ) ; / g, 'using Napi;' ] ,
219+ [ / u s i n g n a m e s p a c e ( n o d e | N a n | v 8 ) ; / g, 'using namespace Napi;' ] ,
220+ // delete using v8::Local;
221+ [ / u s i n g v 8 : : L o c a l ; \n / g, '' ] ,
222+ // replace using v8::XXX; with using Napi::XXX
223+ [ / u s i n g v 8 : : ( [ A - Z a - z ] + ) ; / g, 'using Napi::$1;' ] ,
189224
190225] ;
191226
@@ -218,9 +253,10 @@ function listFiles(dir, filelist) {
218253}
219254
220255function convert ( content , operations ) {
221- operations . forEach ( function ( operation ) {
256+ for ( let i = 0 ; i < operations . length ; i ++ ) {
257+ let operation = operations [ i ] ;
222258 content = content . replace ( operation [ 0 ] , operation [ 1 ] ) ;
223- } ) ;
259+ }
224260 return content ;
225261}
226262
0 commit comments