Ejemplo n.º 1
0
        public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
        {
            var tsBuffer     = TypeScriptTranspiler.GetSerializedTypeScriptCompiler(context);
            var fnTypeScript = context.ParseSerializedScript(tsBuffer, () => EmbeddedResourceHelper.LoadResource(TypeScriptTranspiler.ResourceName), "[typescript]");

            return(fnTypeScript.Call <JsObject>());
        }
Ejemplo n.º 2
0
        public void BaristaModuleCanReferenceItself()
        {
            using (var rt = BaristaRuntimeFactory.CreateRuntime())
            {
                using (var ctx = rt.CreateContext())
                {
                    var converter           = m_provider.GetRequiredService <IBaristaConversionStrategy>();
                    var moduleRecordFactory = m_provider.GetRequiredService <IBaristaModuleRecordFactory>();
                    var moduleLoader        = m_provider.GetRequiredService <IBaristaModuleLoader>();

                    using (ctx.Scope())
                    {
                        var specifier    = ctx.CreateString("");
                        var moduleHandle = rt.Engine.JsInitializeModuleRecord(JavaScriptModuleRecord.Invalid, specifier.Handle);

                        try
                        {
                            var mod = new BaristaModuleRecord("foo", specifier.Handle, null, rt.Engine, ctx, moduleRecordFactory, moduleLoader, moduleHandle);
                            mod.ParseModuleSource("import foo from 'foo'; export default 'hello, world!'");
                            Assert.True(mod.IsReady);
                        }
                        finally
                        {
                            //Without disposing of the moduleHandle, the runtime *will* crash the process.
                            moduleHandle.Dispose();
                        }
                    }
                }
            }

            Assert.True(true);
        }
Ejemplo n.º 3
0
        public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
        {
            var buffer   = SerializedScriptService.GetSerializedScript(ResourceName, context, mapWindowToGlobal: true);
            var fnScript = context.ParseSerializedScript(buffer, () => EmbeddedResourceHelper.LoadResource(ResourceName), "[uuid]");

            return(fnScript.Call <JsObject>());
        }
Ejemplo n.º 4
0
        public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
        {
            var brewRequest = new BrewRequest(context, m_request);

            context.Converter.TryFromObject(context, brewRequest, out JsValue requestObj);
            context.Converter.TryFromObject(context, typeof(BrewResponse), out JsValue responseObj);
            //context.Converter.TryFromObject(context, m_log, out JsValue logObj);

            var contextObj = context.CreateObject();

            context.Object.DefineProperty(contextObj, "request", new JsPropertyDescriptor()
            {
                Configurable = false,
                Writable     = false,
                Value        = requestObj
            });

            context.Object.DefineProperty(contextObj, "response", new JsPropertyDescriptor()
            {
                Configurable = false,
                Writable     = false,
                Value        = responseObj
            });

            return(contextObj);
        }
Ejemplo n.º 5
0
        public void BaristaModuleThrowsIfContextNotSpecified()
        {
            using (var rt = BaristaRuntimeFactory.CreateRuntime())
            {
                using (var ctx = rt.CreateContext())
                {
                    var converter           = m_provider.GetRequiredService <IBaristaConversionStrategy>();
                    var moduleRecordFactory = m_provider.GetRequiredService <IBaristaModuleRecordFactory>();
                    var moduleLoader        = m_provider.GetRequiredService <IBaristaModuleLoader>();

                    using (ctx.Scope())
                    {
                        var specifier    = ctx.CreateString("");
                        var moduleHandle = rt.Engine.JsInitializeModuleRecord(JavaScriptModuleRecord.Invalid, specifier.Handle);

                        try
                        {
                            Assert.Throws <ArgumentNullException>(() =>
                            {
                                var mod = new BaristaModuleRecord("", null, null, rt.Engine, null, moduleRecordFactory, moduleLoader, moduleHandle);
                            });
                        }
                        finally
                        {
                            //Without disposing of the moduleHandle, the runtime *will* crash the process.
                            moduleHandle.Dispose();
                        }
                    }
                }
            }

            Assert.True(true);
        }
Ejemplo n.º 6
0
        public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
        {
            var buffer   = SerializedScriptService.GetSerializedScript(ResourceName, context);
            var fnScript = context.ParseSerializedScript(buffer, () => EmbeddedResourceHelper.LoadResource(ResourceName), "[react-dom-server]");
            var jsReact  = fnScript.Call <JsObject>();

            return(jsReact);
        }
Ejemplo n.º 7
0
 public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
 {
     var fnFetch = context.CreateFunction(new Func <JsObject, JsValue, JsObject, object>((thisObj, input, init) =>
     {
         Request request;
         if (input is JsObject inputObj && inputObj.Type == JsValueType.Object && inputObj.TryGetBean(out JsExternalObject exObj) && exObj.Target is Request inputRequest)
         {
             request = new Request(inputRequest);
         }
Ejemplo n.º 8
0
        public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
        {
            var transpiledScript = TypeScriptTranspiler.Default.Transpile(new TranspileOptions()
            {
                Script   = Script,
                FileName = m_filename
            }).GetAwaiter().GetResult();

            return(context.CreateString(transpiledScript.OutputText));
        }
Ejemplo n.º 9
0
            public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
            {
                var foo = new CarlyRae()
                {
                    Name = "Kilroy"
                };

                context.Converter.TryFromObject(context, foo, out JsValue resultObj);
                return(resultObj);
            }
Ejemplo n.º 10
0
            public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
            {
                var fnResult = context.CreateFunction(new Func <JsObject, JsValue, JsValue>((thisObj, toReverse) =>
                {
                    if (toReverse == null || String.IsNullOrWhiteSpace(toReverse.ToString()))
                    {
                        return(context.Undefined);
                    }

                    var str       = toReverse.ToString();
                    var charArray = str.ToCharArray();
                    Array.Reverse(charArray);
                    var reversed = new string(charArray);

                    return(context.CreateString(reversed));
                }));

                return(fnResult);
            }
Ejemplo n.º 11
0
 public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
 {
     return(context.JSON.Parse(context.CreateString(JsonText)));
 }
Ejemplo n.º 12
0
 public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
 {
     return(context.CreateString("The maze isn't meant for you."));
 }
Ejemplo n.º 13
0
 public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
 {
     return(context.CreateString("You'll not see me."));
 }
Ejemplo n.º 14
0
 public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
 {
     return(context.CreateString(referencingModule.Name));
 }
Ejemplo n.º 15
0
 public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
 {
     throw new Exception("Derp!");
 }
Ejemplo n.º 16
0
 public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
 {
     return(context.CreateNumber(42));
 }
Ejemplo n.º 17
0
 public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
 {
     return(context.CreateString("Hello, World!"));
 }
Ejemplo n.º 18
0
 public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
 {
     return(context.CreateString(m_resourceManager.GetString(ResourceName, ResourceCulture)));
 }
Ejemplo n.º 19
0
        public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
        {
            var toXml = context.CreateFunction(new Func <JsObject, JsValue, JsValue>((thisObj, json) =>
            {
                if (json == context.Undefined || json == context.Null || String.IsNullOrWhiteSpace(json.ToString()))
                {
                    var error = context.CreateError($"A Json string must be specified as the first argument.");
                    context.Engine.JsSetException(error.Handle);
                    return(context.Undefined);
                }

                var jsonData = json.ToString();
                var xmlDoc   = JsonConvert.DeserializeXmlNode(jsonData);
                using (var stringWriter = new StringWriter())
                    using (var xmlTextWriter = XmlWriter.Create(stringWriter))
                    {
                        xmlDoc.WriteTo(xmlTextWriter);
                        xmlTextWriter.Flush();
                        return(context.CreateString(stringWriter.GetStringBuilder().ToString()));
                    }
            }));

            var toJson = context.CreateFunction(new Func <JsObject, JsValue, JsValue, JsValue>((thisObj, xml, options) =>
            {
                if (xml == context.Undefined || xml == context.Null || String.IsNullOrWhiteSpace(xml.ToString()))
                {
                    var error = context.CreateError($"An xml string must be specified as the first argument.");
                    context.Engine.JsSetException(error.Handle);
                    return(context.Undefined);
                }

                var xmlData = xml.ToString();
                var xmlDoc  = new XmlDocument();
                xmlDoc.LoadXml(xmlData);

                bool toObject       = false;
                bool omitRootObject = false;
                Newtonsoft.Json.Formatting formatting = Newtonsoft.Json.Formatting.None;
                if (options is JsObject jsOptions && jsOptions.Type == JsValueType.Object)
                {
                    if (jsOptions.HasProperty("object") && jsOptions["object"].ToBoolean() == true)
                    {
                        toObject = true;
                    }

                    if (jsOptions.HasProperty("omitRootObject") && jsOptions["omitRootObject"].ToBoolean() == true)
                    {
                        omitRootObject = true;
                    }

                    if (jsOptions.HasProperty("formatting") && Enum.TryParse(jsOptions["formatting"].ToString(), out Newtonsoft.Json.Formatting requestedFormatting))
                    {
                        formatting = requestedFormatting;
                    }
                }

                var json = JsonConvert.SerializeXmlNode(xmlDoc, formatting, omitRootObject);

                if (toObject)
                {
                    return(context.JSON.Parse(context.CreateString(json)));
                }
                return(context.CreateString(json));
            }));

            var resultObj = context.CreateObject();

            context.Object.DefineProperty(resultObj, "toXml", new JsPropertyDescriptor
            {
                Enumerable = true,
                Value      = toXml
            });

            context.Object.DefineProperty(resultObj, "toJson", new JsPropertyDescriptor
            {
                Enumerable = true,
                Value      = toJson
            });

            return(resultObj);
        }
Ejemplo n.º 20
0
 public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
 {
     context.Converter.TryFromObject(context, typeof(Blob), out JsValue value);
     return(value);
 }
 public JsValue ExportDefault(BaristaContext context, BaristaModuleRecord referencingModule)
 {
     return(context.CreateString("Goodnight, moon."));
 }