public JavascriptTransform(IJsEngineFactory factory, IContext context, IReader reader) : base(context, null)
        {
            _context = context;
            _engine  = factory.CreateEngine();

            // for js, always add the input parameter
            _input = MultipleInput().Union(new[] { context.Field }).Distinct().ToArray();

            // load any global scripts
            foreach (var sc in context.Process.Scripts.Where(s => s.Global))
            {
                ProcessScript(context, reader, context.Process.Scripts.First(s => s.Name == sc.Name));
            }

            // load any specified scripts
            if (context.Transform.Scripts.Any())
            {
                foreach (var sc in context.Transform.Scripts)
                {
                    ProcessScript(context, reader, context.Process.Scripts.First(s => s.Name == sc.Name));
                }
            }

            // make this reference the host field
            context.Transform.Script = $"var self = {context.Field.Alias};\r\n{context.Transform.Script}";
            context.Debug(() => $"Script in {context.Field.Alias} : {context.Transform.Script.Replace("{", "{{").Replace("}", "}}")}");
        }
        public JavascriptTransform(IJsEngineFactory factory, IReader reader, IContext context = null) : base(context, "object")
        {
            if (IsMissingContext())
            {
                return;
            }

            if (IsMissing(Context.Operation.Script))
            {
                return;
            }

            _engine = factory.CreateEngine();
            _input  = Context.Entity.GetFieldMatches(Context.Operation.Script).ToArray();

            // load any global scripts
            foreach (var sc in Context.Process.Scripts.Where(s => s.Global))
            {
                ProcessScript(context, reader, Context.Process.Scripts.First(s => s.Name == sc.Name));
            }

            // load any specified scripts
            if (Context.Operation.Scripts.Any())
            {
                foreach (var sc in Context.Operation.Scripts)
                {
                    ProcessScript(context, reader, Context.Process.Scripts.First(s => s.Name == sc.Name));
                }
            }

            Context.Debug(() => $"Script in {Context.Field.Alias} : {Context.Operation.Script.Replace("{", "{{").Replace("}", "}}")}");
        }
Exemple #3
0
        /// <summary>
        /// Constructs an instance of the Sass compiler
        /// </summary>
        /// <param name="jsEngineFactory">JS engine factory</param>
        /// <param name="fileManager">File manager</param>
        /// <param name="options">Compilation options</param>
        public SassCompiler(IJsEngineFactory jsEngineFactory, IFileManager fileManager, CompilationOptions options)
        {
            if (jsEngineFactory == null)
            {
                throw new ArgumentNullException(nameof(jsEngineFactory));
            }

            if (fileManager == null)
            {
                throw new ArgumentNullException(nameof(fileManager));
            }

            InitializeFields(jsEngineFactory.CreateEngine, fileManager, options);
        }
        /// <summary>
        /// Creates a instance of JS engine
        /// </summary>
        /// <param name="name">JS engine name</param>
        /// <returns>JS engine</returns>
        public IJsEngine CreateEngine(string name)
        {
            IJsEngine        engine;
            IJsEngineFactory engineFactory = EngineFactories.Get(name);

            if (engineFactory != null)
            {
                engine = engineFactory.CreateEngine();
            }
            else
            {
                throw new JsEngineNotFoundException(
                          string.Format(Strings.Configuration_JsEngineFactoryNotFound, name));
            }

            return(engine);
        }
        protected RazorReactManagerBase(ReactBundle reactServerSideBundle, ReactBundle reactClientSideBundle, IServerPathMapper mapServerPath, IJsEngineFactory jsEngineFactory, RazorReactOptions options = null)
        {
            if (options != null)
            {
                Options = options;
            }

            _jsEngineFactory = jsEngineFactory;

            _mapServerPath = mapServerPath;

            ReactServerSideBundle = reactServerSideBundle;
            ReactClientSideBundle = reactClientSideBundle;

            // TODO: JsPool
            //JsEngineSwitcher.Current.DefaultEngineName = ChakraCoreJsEngine.EngineName; // V8JsEngine.EngineName;
            //JsEngineSwitcher.Current.EngineFactories.AddChakraCore(); //.AddV8();
            //JsEngineSwitcher.Current.CreateDefaultEngine();
        }
        /// <summary>
        /// Constructs an instance of the Autoprefixer
        /// </summary>
        /// <param name="jsEngineFactory">JS engine factory</param>
        /// <param name="options">Processing options</param>
        public Autoprefixer(IJsEngineFactory jsEngineFactory, ProcessingOptions options)
        {
            if (jsEngineFactory == null)
            {
                throw new ArgumentNullException(nameof(jsEngineFactory));
            }

            _options           = options ?? _defaultOptions;
            _serializedOptions = SerializeProcessingOptions(_options);

            try
            {
                _jsEngine = jsEngineFactory.CreateEngine();
            }
            catch (JsEngineLoadException e)
            {
                throw AutoprefixerErrorHelpers.WrapAutoprefixerLoadException(e);
            }
            catch (Exception e)
            {
                throw AutoprefixerErrorHelpers.WrapAutoprefixerLoadException(e, true);
            }
        }
Exemple #7
0
 /// <summary>
 /// Constructs an instance of the Sass compiler
 /// </summary>
 /// <param name="jsEngineFactory">JS engine factory</param>
 /// <param name="options">Compilation options</param>
 public SassCompiler(IJsEngineFactory jsEngineFactory, CompilationOptions options)
     : this(jsEngineFactory, FileManager.Instance, options)
 {
 }
Exemple #8
0
 /// <summary>
 /// Constructs an instance of the Sass compiler
 /// </summary>
 /// <param name="jsEngineFactory">JS engine factory</param>
 /// <param name="fileManager">File manager</param>
 public SassCompiler(IJsEngineFactory jsEngineFactory, IFileManager fileManager)
     : this(jsEngineFactory, fileManager, _defaultOptions)
 {
 }
Exemple #9
0
 /// <summary>
 /// Constructs an instance of the Sass compiler
 /// </summary>
 /// <param name="jsEngineFactory">JS engine factory</param>
 public SassCompiler(IJsEngineFactory jsEngineFactory)
     : this(jsEngineFactory, _defaultOptions)
 {
 }
Exemple #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="JsEngineMiddleware"/> class.
 /// </summary>
 /// <param name="next">The next.</param>
 /// <param name="javaScriptEngineFactory">The java script engine factory.</param>
 public JsEngineMiddleware(RequestDelegate next,
                           IJsEngineFactory javaScriptEngineFactory)
 {
     _next = next;
     _javaScriptEngineFactory = javaScriptEngineFactory;
 }
 public SassCompiler CreateSassCompiler(IJsEngineFactory jsEngineFactory)
 {
     return(new SassCompiler(jsEngineFactory, PhysicalFileManager.Instance));
 }
Exemple #12
0
 public RazorReactManager(ReactBundle reactServerSideBundle, ReactBundle reactClientSideBundle, IJsEngineFactory jsEngineFactory, RazorReactOptions options = null) : base(reactServerSideBundle, reactClientSideBundle, new ServerPathMapper(), jsEngineFactory, options)
 {
 }
 /// <summary>
 /// Constructs an instance of the Autoprefixer
 /// </summary>
 /// <param name="jsEngineFactory">JS engine factory</param>
 public Autoprefixer(IJsEngineFactory jsEngineFactory)
     : this(jsEngineFactory, _defaultOptions)
 {
 }