<commit_before>define([
  'angular',
  'jquery',
  'kbn',
  'moment',
  'lodash',
  './grafanaGraph.tooltip'
],
function (angular, $, kbn, moment, _, graphTooltip) {
  'use strict';

  var module = angular.module('grafana.directives');

  module.directive('grafanaGraph', function($rootScope, timeSrv) {
    return {
      restrict: 'A',
      template: '

',
      link: function(scope, elem) {
        var dashboard = scope.dashboard;
        var data, annotations;
        var legendSideLastValue = null;
        scope.crosshairEmiter = false;

        scope.onAppEvent('setCrosshair', function(event, info) {
          // do not need to to this if event is from this panel
          if (info.scope === scope) {
            return;
          }

          if(dashboard.sharedCrosshair) {
            console.log("setCrosshair");
            var plot = elem.data().plot;
            if (plot) {
              plot.setCrosshair({ x: info.pos.x, y: info.pos.y });
            }
          }
        });

        scope.onAppEvent('clearCrosshair', function() {
          var plot = elem.data().plot;
          plot.clearCrosshair();
        });

        scope.$on('refresh', function() {
          scope.get_data();
        });

        scope.$on('toggleLegend', function() {
          render_panel();
        });

        // Receive render events
        scope.$on('render',function(event, renderData) {
          data = renderData || data;
          if (!data) {
            scope.get_data();
            return;
          }
          annotations = data.annotations || annotations;
          render_panel();
        });

        function setElementHeight() {
          try {
            var height = scope.height || scope.panel.height || scope.row.height;
            if (_.isString(height)) {
              height = parseInt(height.replace('px', ''), 10);
            }

            height = height - 32; // subtract panel title bar

            if (scope.panel.legend.show && !scope.panel.legend.rightSide) {
              height = height - 21; // subtract one line legend
            }

            elem.css('height', height + 'px');

            return true;
          } catch(e) { // IE throws errors sometimes
            return false;
          }
        }

        function shouldAbortRender() {
          if (!data) {
            return true;
          }

          if ($rootScope.fullscreen && !scope.fullscreen) {
            return true;
          }

          if (!setElementHeight()) { return true; }

          if (_.isString(data)) {
            render_panel_as_graphite_png(data);
            return true;
          }

          if (elem.width() === 0) {
            return;
          }
        }

        function updateLegendValues(plot) {
          var yaxis = plot.getYAxes();

          for (var i = 0; i < data.length; i++) {
            var series = data[i];
            var axis = yaxis[series.yaxis - 1];
            var formater = kbn.valueFormats[scope.panel.y_formats[series.yaxis - 1]];
            series.updateLegendValues(formater, axis.tickDecimals, axis.scaledDecimals);
          }

        }

        // Function for rendering panel
        function render_panel() {
          if (shouldAbortRender()) {
            return;
          }

          var panel = scope.panel;
          var stack = panel.stack ? true : null;

          // Populate element
          var options = {
            hooks: { draw: [updateLegendValues] },
            legend: { show: false },
            series: {
              stackpercent: panel.stack ? panel.percentage : false,
              stack: panel.percentage ? null : stack,
              lines:  {
                show: panel.lines,
                zero: false,
                fill: translateFillOption(panel.fill),
                lineWidth: panel.linewidth,
                steps: panel.steppedLine
              },
              bars:   {
                show: panel.bars,
                fill: 1,
                barWidth: 1,
                zero: false,
                lineWidth: 0
              },
              points: {
                show: panel.points,
                fill: 1,
                fillColor: false,
                radius: panel.points ? panel.pointradius : 2
                // little points when highlight points
              },
              shadowSize: 1
            },
            yaxes: [],
            xaxis: {},
            grid: {
              minBorderMargin: 0,
              markings: [],
              backgroundColor: null,
              borderWidth: 0,
              hoverable: true,
              color: '#c8c8c8'
            },
            selection: {
              mode: "x",
              color: '#666'
            },
            crosshair: {
              mode: panel.tooltip.shared || dashboard.sharedCrosshair ? "x" : null
            }
          };

          for (var i = 0; i < data.length; i++) {
            var series = data[i];
            series.applySeriesOverrides(panel.seriesOverrides);
            series.data = series.getFlotPairs(panel.nullPointMode, panel.y_formats);
            // if hidden remove points and disable stack
            if (scope.hiddenSeries[series.info.alias]) {
              series.data = [];
              series.stack = false;
            }
          }

          if (data.length && data[0].info.timeStep) {
            options.series.bars.barWidth = data[0].info.timeStep / 1.5;
          }

          addTimeAxis(options);
          addGridThresholds(options, panel);
          addAnnotations(options);
          configureAxisOptions(data, options);

          var sortedSeries = _.sortBy(data, function(series) { return series.zindex; });

          function callPlot() {
            try {
              $.plot(elem, sortedSeries, options);
            } catch (e) {
              console.log('flotcharts error', e);
            }

            addAxisLabels();
          }

          if (shouldDelayDraw(panel)) {
            setTimeout(callPlot, 50);
            legendSideLastValue = panel.legend.rightSide;
          }
          else {
            callPlot();
          }
        }

        function translateFillOption(fill) {
          return fill === 0 ? 0.001 : fill/10;
        }

        function shouldDelayDraw(panel) {
          if (panel.legend.rightSide) {
            return true;
          }
          if (legendSideLastValue !== null && panel.legend.rightSide !== legendSideLastValue) {
            return true;
          }
          return false;
        }

        function addTimeAxis(options) {
          var ticks = elem.width() / 100;
          var min = _.isUndefined(scope.range.from) ? null : scope.range.from.getTime();
          var max = _.isUndefined(scope.range.to) ? null : scope.range.to.getTime();

          options.xaxis = {
            timezone: dashboard.timezone,
            show: scope.panel['x-axis'],
            mode: "time",
            min: min,
            max: max,
            label: "Datetime",
            ticks: ticks,
            timeformat: time_format(scope.interval, ticks, min, max),
          };
        }

        function addGridThresholds(options, panel) {
          if (panel.grid.threshold1) {
            var limit1 = panel.grid.thresholdLine ? panel.grid.threshold1 : (panel.grid.threshold2 || null);
            options.grid.markings.push({
              yaxis: { from: panel.grid.threshold1, to: limit1 },
              color: panel.grid.threshold1Color
            });

            if (panel.grid.threshold2) {
              var limit2;
              if (panel.grid.thresholdLine) {
                limit2 = panel.grid.threshold2;
              } else {
                limit2 = panel.grid.threshold1 > panel.grid.threshold2 ?  -Infinity : +Infinity;
              }
              options.grid.markings.push({
                yaxis: { from: panel.grid.threshold2, to: limit2 },
                color: panel.grid.threshold2Color
              });
            }
          }
        }

        function addAnnotations(options) {
          if(!annotations || annotations.length === 0) {
            return;
          }

          var types = {};

          _.each(annotations, function(event) {
            if (!types[event.annotation.name]) {
              types[event.annotation.name] = {
                level: _.keys(types).length + 1,
                icon: {
                  icon: "icon-chevron-down",
                  size: event.annotation.iconSize,
                  color: event.annotation.iconColor,
                }
              };
            }

            if (event.annotation.showLine) {
              options.grid.markings.push({
                color: event.annotation.lineColor,
                lineWidth: 1,
                xaxis: { from: event.min, to: event.max }
              });
            }
          });

          options.events = {
            levels: _.keys(types).length + 1,
            data: annotations,
            types: types
          };
        }

        function addAxisLabels() {
          if (scope.panel.leftYAxisLabel) {
            elem.css('margin-left', '10px');
            var yaxisLabel = $("

")
              .text(scope.panel.leftYAxisLabel)
              .appendTo(elem);

            yaxisLabel.css("margin-top", yaxisLabel.width() / 2 - 20);
          } else if (elem.css('margin-left')) {
            elem.css('margin-left', '');
          }
        }

        function configureAxisOptions(data, options) {
          var defaults = {
            position: 'left',
            show: scope.panel['y-axis'],
            min: scope.panel.grid.leftMin,
            max: scope.panel.percentage && scope.panel.stack ? 100 : scope.panel.grid.leftMax,
          };

          options.yaxes.push(defaults);

          if (_.findWhere(data, {yaxis: 2})) {
            var secondY = _.clone(defaults);
            secondY.position = 'right';
            secondY.min = scope.panel.grid.rightMin;
            secondY.max = scope.panel.percentage && scope.panel.stack ? 100 : scope.panel.grid.rightMax;
            options.yaxes.push(secondY);
            configureAxisMode(options.yaxes[1], scope.panel.y_formats[1]);
          }

          configureAxisMode(options.yaxes[0], scope.panel.y_formats[0]);
        }

        function configureAxisMode(axis, format) {
          axis.tickFormatter = function(val, axis) {
            return kbn.valueFormats[format](val, axis.tickDecimals, axis.scaledDecimals);
          };
        }

        function time_format(interval, ticks, min, max) {
          if (min && max && ticks) {
            var secPerTick = ((max - min) / ticks) / 1000;

            if (secPerTick <= 45) {
              return "%H:%M:%S";
            }
            if (secPerTick <= 3600) {
              return "%H:%M";
            }
            if (secPerTick <= 80000) {
              return "%m/%d %H:%M";
            }
            if (secPerTick <= 2419200) {
              return "%m/%d";
            }
            return "%Y-%m";
          }

          return "%H:%M";
        }

        function render_panel_as_graphite_png(url) {
          url += '&width=' + elem.width();
          url += '&height=' + elem.css('height').replace('px', '');
          url += '&bgcolor=1f1f1f'; // @grayDarker & @grafanaPanelBackground
          url += '&fgcolor=BBBFC2'; // @textColor & @grayLighter
          url += scope.panel.stack ? '&areaMode=stacked' : '';
          url += scope.panel.fill !== 0 ? ('&areaAlpha=' + (scope.panel.fill/10).toFixed(1)) : '';
          url += scope.panel.linewidth !== 0 ? '&lineWidth=' + scope.panel.linewidth : '';
          url += scope.panel.legend.show ? '&hideLegend=false' : '&hideLegend=true';
          url += scope.panel.grid.leftMin !== null ? '&yMin=' + scope.panel.grid.leftMin : '';
          url += scope.panel.grid.leftMax !== null ? '&yMax=' + scope.panel.grid.leftMax : '';
          url += scope.panel.grid.rightMin !== null ? '&yMin=' + scope.panel.grid.rightMin : '';
          url += scope.panel.grid.rightMax !== null ? '&yMax=' + scope.panel.grid.rightMax : '';
          url += scope.panel['x-axis'] ? '' : '&hideAxes=true';
          url += scope.panel['y-axis'] ? '' : '&hideYAxis=true';

          switch(scope.panel.y_formats[0]) {
          case 'bytes':
            url += '&yUnitSystem=binary';
            break;
          case 'bits':
            url += '&yUnitSystem=binary';
            break;
          case 'bps':
            url += '&yUnitSystem=si';
            break;
          case 'short':
            url += '&yUnitSystem=si';
            break;
          case 'none':
            url += '&yUnitSystem=none';
            break;
          }

          switch(scope.panel.nullPointMode) {
          case 'connected':
            url += '&lineMode=connected';
            break;
          case 'null':
            break; // graphite default lineMode
          case 'null as zero':
            url += "&drawNullAsZero=true";
            break;
          }

          url += scope.panel.steppedLine ? '&lineMode=staircase' : '';

          elem.html('');
        }

        graphTooltip.register(elem, dashboard, scope, $rootScope);

        elem.bind("plotselected", function (event, ranges) {
          scope.$apply(function() {
            timeSrv.setTime({
              from  : moment.utc(ranges.xaxis.from).toDate(),
              to    : moment.utc(ranges.xaxis.to).toDate(),
            });
          });
        });
      }
    };
  });

});
<commit_msg>More fixes related to shared crosshair #880<commit_after>define([
  'angular',
  'jquery',
  'kbn',
  'moment',
  'lodash',
  './grafanaGraph.tooltip'
],
function (angular, $, kbn, moment, _, graphTooltip) {
  'use strict';

  var module = angular.module('grafana.directives');

  module.directive('grafanaGraph', function($rootScope, timeSrv) {
    return {
      restrict: 'A',
      template: '

',
      link: function(scope, elem) {
        var dashboard = scope.dashboard;
        var data, annotations;
        var legendSideLastValue = null;
        scope.crosshairEmiter = false;

        scope.onAppEvent('setCrosshair', function(event, info) {
          // do not need to to this if event is from this panel
          if (info.scope === scope) {
            return;
          }

          if(dashboard.sharedCrosshair) {
            var plot = elem.data().plot;
            if (plot) {
              plot.setCrosshair({ x: info.pos.x, y: info.pos.y });
            }
          }
        });

        scope.onAppEvent('clearCrosshair', function() {
          var plot = elem.data().plot;
          if (plot) {
            plot.clearCrosshair();
          }
        });

        scope.$on('refresh', function() {
          scope.get_data();
        });

        scope.$on('toggleLegend', function() {
          render_panel();
        });

        // Receive render events
        scope.$on('render',function(event, renderData) {
          data = renderData || data;
          if (!data) {
            scope.get_data();
            return;
          }
          annotations = data.annotations || annotations;
          render_panel();
        });

        function setElementHeight() {
          try {
            var height = scope.height || scope.panel.height || scope.row.height;
            if (_.isString(height)) {
              height = parseInt(height.replace('px', ''), 10);
            }

            height = height - 32; // subtract panel title bar

            if (scope.panel.legend.show && !scope.panel.legend.rightSide) {
              height = height - 21; // subtract one line legend
            }

            elem.css('height', height + 'px');

            return true;
          } catch(e) { // IE throws errors sometimes
            return false;
          }
        }

        function shouldAbortRender() {
          if (!data) {
            return true;
          }

          if ($rootScope.fullscreen && !scope.fullscreen) {
            return true;
          }

          if (!setElementHeight()) { return true; }

          if (_.isString(data)) {
            render_panel_as_graphite_png(data);
            return true;
          }

          if (elem.width() === 0) {
            return;
          }
        }

        function updateLegendValues(plot) {
          var yaxis = plot.getYAxes();

          for (var i = 0; i < data.length; i++) {
            var series = data[i];
            var axis = yaxis[series.yaxis - 1];
            var formater = kbn.valueFormats[scope.panel.y_formats[series.yaxis - 1]];
            series.updateLegendValues(formater, axis.tickDecimals, axis.scaledDecimals);
          }

        }

        // Function for rendering panel
        function render_panel() {
          if (shouldAbortRender()) {
            return;
          }

          var panel = scope.panel;
          var stack = panel.stack ? true : null;

          // Populate element
          var options = {
            hooks: { draw: [updateLegendValues] },
            legend: { show: false },
            series: {
              stackpercent: panel.stack ? panel.percentage : false,
              stack: panel.percentage ? null : stack,
              lines:  {
                show: panel.lines,
                zero: false,
                fill: translateFillOption(panel.fill),
                lineWidth: panel.linewidth,
                steps: panel.steppedLine
              },
              bars:   {
                show: panel.bars,
                fill: 1,
                barWidth: 1,
                zero: false,
                lineWidth: 0
              },
              points: {
                show: panel.points,
                fill: 1,
                fillColor: false,
                radius: panel.points ? panel.pointradius : 2
                // little points when highlight points
              },
              shadowSize: 1
            },
            yaxes: [],
            xaxis: {},
            grid: {
              minBorderMargin: 0,
              markings: [],
              backgroundColor: null,
              borderWidth: 0,
              hoverable: true,
              color: '#c8c8c8'
            },
            selection: {
              mode: "x",
              color: '#666'
            },
            crosshair: {
              mode: panel.tooltip.shared || dashboard.sharedCrosshair ? "x" : null
            }
          };

          for (var i = 0; i < data.length; i++) {
            var series = data[i];
            series.applySeriesOverrides(panel.seriesOverrides);
            series.data = series.getFlotPairs(panel.nullPointMode, panel.y_formats);
            // if hidden remove points and disable stack
            if (scope.hiddenSeries[series.info.alias]) {
              series.data = [];
              series.stack = false;
            }
          }

          if (data.length && data[0].info.timeStep) {
            options.series.bars.barWidth = data[0].info.timeStep / 1.5;
          }

          addTimeAxis(options);
          addGridThresholds(options, panel);
          addAnnotations(options);
          configureAxisOptions(data, options);

          var sortedSeries = _.sortBy(data, function(series) { return series.zindex; });

          function callPlot() {
            try {
              $.plot(elem, sortedSeries, options);
            } catch (e) {
              console.log('flotcharts error', e);
            }

            addAxisLabels();
          }

          if (shouldDelayDraw(panel)) {
            setTimeout(callPlot, 50);
            legendSideLastValue = panel.legend.rightSide;
          }
          else {
            callPlot();
          }
        }

        function translateFillOption(fill) {
          return fill === 0 ? 0.001 : fill/10;
        }

        function shouldDelayDraw(panel) {
          if (panel.legend.rightSide) {
            return true;
          }
          if (legendSideLastValue !== null && panel.legend.rightSide !== legendSideLastValue) {
            return true;
          }
          return false;
        }

        function addTimeAxis(options) {
          var ticks = elem.width() / 100;
          var min = _.isUndefined(scope.range.from) ? null : scope.range.from.getTime();
          var max = _.isUndefined(scope.range.to) ? null : scope.range.to.getTime();

          options.xaxis = {
            timezone: dashboard.timezone,
            show: scope.panel['x-axis'],
            mode: "time",
            min: min,
            max: max,
            label: "Datetime",
            ticks: ticks,
            timeformat: time_format(scope.interval, ticks, min, max),
          };
        }

        function addGridThresholds(options, panel) {
          if (panel.grid.threshold1) {
            var limit1 = panel.grid.thresholdLine ? panel.grid.threshold1 : (panel.grid.threshold2 || null);
            options.grid.markings.push({
              yaxis: { from: panel.grid.threshold1, to: limit1 },
              color: panel.grid.threshold1Color
            });

            if (panel.grid.threshold2) {
              var limit2;
              if (panel.grid.thresholdLine) {
                limit2 = panel.grid.threshold2;
              } else {
                limit2 = panel.grid.threshold1 > panel.grid.threshold2 ?  -Infinity : +Infinity;
              }
              options.grid.markings.push({
                yaxis: { from: panel.grid.threshold2, to: limit2 },
                color: panel.grid.threshold2Color
              });
            }
          }
        }

        function addAnnotations(options) {
          if(!annotations || annotations.length === 0) {
            return;
          }

          var types = {};

          _.each(annotations, function(event) {
            if (!types[event.annotation.name]) {
              types[event.annotation.name] = {
                level: _.keys(types).length + 1,
                icon: {
                  icon: "icon-chevron-down",
                  size: event.annotation.iconSize,
                  color: event.annotation.iconColor,
                }
              };
            }

            if (event.annotation.showLine) {
              options.grid.markings.push({
                color: event.annotation.lineColor,
                lineWidth: 1,
                xaxis: { from: event.min, to: event.max }
              });
            }
          });

          options.events = {
            levels: _.keys(types).length + 1,
            data: annotations,
            types: types
          };
        }

        function addAxisLabels() {
          if (scope.panel.leftYAxisLabel) {
            elem.css('margin-left', '10px');
            var yaxisLabel = $("

")
              .text(scope.panel.leftYAxisLabel)
              .appendTo(elem);

            yaxisLabel.css("margin-top", yaxisLabel.width() / 2 - 20);
          } else if (elem.css('margin-left')) {
            elem.css('margin-left', '');
          }
        }

        function configureAxisOptions(data, options) {
          var defaults = {
            position: 'left',
            show: scope.panel['y-axis'],
            min: scope.panel.grid.leftMin,
            max: scope.panel.percentage && scope.panel.stack ? 100 : scope.panel.grid.leftMax,
          };

          options.yaxes.push(defaults);

          if (_.findWhere(data, {yaxis: 2})) {
            var secondY = _.clone(defaults);
            secondY.position = 'right';
            secondY.min = scope.panel.grid.rightMin;
            secondY.max = scope.panel.percentage && scope.panel.stack ? 100 : scope.panel.grid.rightMax;
            options.yaxes.push(secondY);
            configureAxisMode(options.yaxes[1], scope.panel.y_formats[1]);
          }

          configureAxisMode(options.yaxes[0], scope.panel.y_formats[0]);
        }

        function configureAxisMode(axis, format) {
          axis.tickFormatter = function(val, axis) {
            return kbn.valueFormats[format](val, axis.tickDecimals, axis.scaledDecimals);
          };
        }

        function time_format(interval, ticks, min, max) {
          if (min && max && ticks) {
            var secPerTick = ((max - min) / ticks) / 1000;

            if (secPerTick <= 45) {
              return "%H:%M:%S";
            }
            if (secPerTick <= 3600) {
              return "%H:%M";
            }
            if (secPerTick <= 80000) {
              return "%m/%d %H:%M";
            }
            if (secPerTick <= 2419200) {
              return "%m/%d";
            }
            return "%Y-%m";
          }

          return "%H:%M";
        }

        function render_panel_as_graphite_png(url) {
          url += '&width=' + elem.width();
          url += '&height=' + elem.css('height').replace('px', '');
          url += '&bgcolor=1f1f1f'; // @grayDarker & @grafanaPanelBackground
          url += '&fgcolor=BBBFC2'; // @textColor & @grayLighter
          url += scope.panel.stack ? '&areaMode=stacked' : '';
          url += scope.panel.fill !== 0 ? ('&areaAlpha=' + (scope.panel.fill/10).toFixed(1)) : '';
          url += scope.panel.linewidth !== 0 ? '&lineWidth=' + scope.panel.linewidth : '';
          url += scope.panel.legend.show ? '&hideLegend=false' : '&hideLegend=true';
          url += scope.panel.grid.leftMin !== null ? '&yMin=' + scope.panel.grid.leftMin : '';
          url += scope.panel.grid.leftMax !== null ? '&yMax=' + scope.panel.grid.leftMax : '';
          url += scope.panel.grid.rightMin !== null ? '&yMin=' + scope.panel.grid.rightMin : '';
          url += scope.panel.grid.rightMax !== null ? '&yMax=' + scope.panel.grid.rightMax : '';
          url += scope.panel['x-axis'] ? '' : '&hideAxes=true';
          url += scope.panel['y-axis'] ? '' : '&hideYAxis=true';

          switch(scope.panel.y_formats[0]) {
          case 'bytes':
            url += '&yUnitSystem=binary';
            break;
          case 'bits':
            url += '&yUnitSystem=binary';
            break;
          case 'bps':
            url += '&yUnitSystem=si';
            break;
          case 'short':
            url += '&yUnitSystem=si';
            break;
          case 'none':
            url += '&yUnitSystem=none';
            break;
          }

          switch(scope.panel.nullPointMode) {
          case 'connected':
            url += '&lineMode=connected';
            break;
          case 'null':
            break; // graphite default lineMode
          case 'null as zero':
            url += "&drawNullAsZero=true";
            break;
          }

          url += scope.panel.steppedLine ? '&lineMode=staircase' : '';

          elem.html('');
        }

        graphTooltip.register(elem, dashboard, scope, $rootScope);

        elem.bind("plotselected", function (event, ranges) {
          scope.$apply(function() {
            timeSrv.setTime({
              from  : moment.utc(ranges.xaxis.from).toDate(),
              to    : moment.utc(ranges.xaxis.to).toDate(),
            });
          });
        });
      }
    };
  });

});
<|endoftext|>


<commit_before>Package.describe({
  summary: "Define and run db migrations.",
  version: "0.9.8",
  name: "percolate:migrations",
  git: "https://github.com/percolatestudio/meteor-migrations.git"
});

Package.on_use(function (api) {
  api.versionsFrom('METEOR@0.9.1.1');
  api.use(['underscore', 'check', 'mongo', 'logging'], 'server');
  api.addFiles(['migrations_server.js'], "server");
  api.export('Migrations', 'server');
});

Package.on_test(function (api) {
  api.use(['percolate:migrations', 'tinytest']);
  api.addFiles('migrations_tests.js', ['server']);
});
<commit_msg>Changed the version to 0.9.8.1<commit_after>Package.describe({
  summary: "Define and run db migrations.",
  version: "0.9.8.1",
  name: "percolate:migrations",
  git: "https://github.com/percolatestudio/meteor-migrations.git"
});

Package.on_use(function (api) {
  api.versionsFrom('METEOR@0.9.1.1');
  api.use(['underscore', 'check', 'mongo', 'logging'], 'server');
  api.addFiles(['migrations_server.js'], "server");
  api.export('Migrations', 'server');
});

Package.on_test(function (api) {
  api.use(['percolate:migrations', 'tinytest']);
  api.addFiles('migrations_tests.js', ['server']);
});
<|endoftext|>


<commit_before>/**
 * Copyright (c) 2015 IBM Corporation
 * Copyright (C) 2011--2015 Meteor Development Group
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 *  without limitation the rights to use, copy, modify, merge, publish,
 *  distribute, sublicense, and/or sell copies of the Software, and to
 *  permit persons to whom the Software is furnished to do so,
 *  subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

Package.describe({
  name: 'cloudant:couchdb',
  version: '0.0.4',
  // Brief, one-line summary of the package.
  summary: 'Full stack database driver for CouchDB/Cloudant in Meteor',
  // URL to the Git repository containing the source code for this package.
  git: 'https://github.com/cloudant/meteor-couchdb',
  // By default, Meteor will default to using README.md for documentation.
  // To avoid submitting documentation, set this field to null.
  documentation: 'README.md'
});

Npm.depends({
  cloudant: "1.2.0",
  "double-ended-queue": "2.1.0-0",
  "collections": "1.2.2"

});

Package.onUse(function(api) {
  api.versionsFrom('1.2');
  api.use(['random', 'ejson',  'underscore',  'minimongo', 'logging',
           'ddp', 'tracker', 'diff-sequence', 'mongo-id'],
          ['client', 'server']);

  api.use('check', ['client', 'server']);

  // Binary Heap data structure is used to optimize oplog observe driver
  // performance.
  api.use('binary-heap', 'server');

   // Allow us to detect 'insecure'.
  api.use('insecure', {weak: true});

  // Allow us to detect 'autopublish', and publish collections if it's loaded.
  api.use('autopublish', 'server', {weak: true});

   // defaultRemoteCollectionDriver gets its deployConfig from something that is
  // (for questionable reasons) initialized by the webapp package.
  api.use('webapp', 'server', {weak: true});

  // If the facts package is loaded, publish some statistics.
  api.use('facts', 'server', {weak: true});

  api.use('callback-hook', 'server');

  // Stuff that should be exposed via a real API, but we haven't yet.
  api.export('CouchDBInternals', 'server');
  // For tests only.
  api.export('CouchDB');
  api.export('CouchDBTest');

  api.addFiles(['couchdb_driver.js','changes_tailing.js',
                'observe_multiplex.js','changes_observe_driver.js',
                'polling_observe_driver.js','doc_fetcher.js'],
                'server');

  api.addFiles('local_collection_driver.js', ['client', 'server']);
  api.addFiles('remote_collection_driver.js', 'server');
  api.addFiles('collection.js', ['client', 'server']);

});

Package.onTest(function(api) {
  api.use('tinytest');
  api.use('check');
  api.use('cloudant:couchdb');
  api.use(['tinytest', 'underscore', 'test-helpers', 'ejson', 'random',
           'ddp', 'base64']);
  api.addFiles('allow_tests.js', ['client', 'server']);
  api.addFiles('doc_fetcher_tests.js', 'server');
  api.addFiles('collection_tests.js', ['client', 'server']);
  api.addFiles('oplog_tests.js', 'server');
  api.addFiles('observe_changes_tests.js', ['client', 'server']);
  api.addFiles('couchdb_livedata_tests.js', ['client', 'server']);
  api.addFiles('callbackloggercouch.js', ['client', 'server']);
});
<commit_msg>bumped version to 0.0.5<commit_after>/**
 * Copyright (c) 2015 IBM Corporation
 * Copyright (C) 2011--2015 Meteor Development Group
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 *  without limitation the rights to use, copy, modify, merge, publish,
 *  distribute, sublicense, and/or sell copies of the Software, and to
 *  permit persons to whom the Software is furnished to do so,
 *  subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

Package.describe({
  name: 'cloudant:couchdb',
  version: '0.0.5',
  // Brief, one-line summary of the package.
  summary: 'Full stack database driver for CouchDB/Cloudant in Meteor',
  // URL to the Git repository containing the source code for this package.
  git: 'https://github.com/cloudant/meteor-couchdb',
  // By default, Meteor will default to using README.md for documentation.
  // To avoid submitting documentation, set this field to null.
  documentation: 'README.md'
});

Npm.depends({
  cloudant: "1.2.0",
  "double-ended-queue": "2.1.0-0",
  "collections": "1.2.2"

});

Package.onUse(function(api) {
  api.versionsFrom('1.2');
  api.use(['random', 'ejson',  'underscore',  'minimongo', 'logging',
           'ddp', 'tracker', 'diff-sequence', 'mongo-id'],
          ['client', 'server']);

  api.use('check', ['client', 'server']);

  // Binary Heap data structure is used to optimize oplog observe driver
  // performance.
  api.use('binary-heap', 'server');

   // Allow us to detect 'insecure'.
  api.use('insecure', {weak: true});

  // Allow us to detect 'autopublish', and publish collections if it's loaded.
  api.use('autopublish', 'server', {weak: true});

   // defaultRemoteCollectionDriver gets its deployConfig from something that is
  // (for questionable reasons) initialized by the webapp package.
  api.use('webapp', 'server', {weak: true});

  // If the facts package is loaded, publish some statistics.
  api.use('facts', 'server', {weak: true});

  api.use('callback-hook', 'server');

  // Stuff that should be exposed via a real API, but we haven't yet.
  api.export('CouchDBInternals', 'server');
  // For tests only.
  api.export('CouchDB');
  api.export('CouchDBTest');

  api.addFiles(['couchdb_driver.js','changes_tailing.js',
                'observe_multiplex.js','changes_observe_driver.js',
                'polling_observe_driver.js','doc_fetcher.js'],
                'server');

  api.addFiles('local_collection_driver.js', ['client', 'server']);
  api.addFiles('remote_collection_driver.js', 'server');
  api.addFiles('collection.js', ['client', 'server']);

});

Package.onTest(function(api) {
  api.use('tinytest');
  api.use('check');
  api.use('cloudant:couchdb');
  api.use(['tinytest', 'underscore', 'test-helpers', 'ejson', 'random',
           'ddp', 'base64']);
  api.addFiles('allow_tests.js', ['client', 'server']);
  api.addFiles('doc_fetcher_tests.js', 'server');
  api.addFiles('collection_tests.js', ['client', 'server']);
  api.addFiles('oplog_tests.js', 'server');
  api.addFiles('observe_changes_tests.js', ['client', 'server']);
  api.addFiles('couchdb_livedata_tests.js', ['client', 'server']);
  api.addFiles('callbackloggercouch.js', ['client', 'server']);
});
<|endoftext|>


<commit_before>/*
    Agora Forum Software
    Copyright (C) 2016 Gregory Sartucci
    License: AGPL-3.0, Check file LICENSE
*/

Package.describe({
    name: 'agoraforum:core',
    version: '0.1.3',
    summary: 'Graph-based forum',
    git: 'https://github.com/Agora-Project/agora-meteor',
    documentation: 'README.md'
});

Package.onUse(function(api) {
    both = ['client', 'server'];

    api.versionsFrom('1.1.0.3');

    api.addFiles([
        'server/initial-data.js',
        'server/methods.js',
        'server/publish.js',
        'server/users.js'
    ], 'server');

    api.addFiles([
        'lib/identity_collections/identity_collections.js',
        'lib/grapher/layered_grapher.js',
        'lib/schemas/post.js',
        'lib/schemas/report.js',
        'lib/schemas/tag.js',
        'lib/schemas/vote.js',
        'routes.js'
    ], both);

    api.use([
        'underscore',
        'ecmascript',
        'iron:router',
	    'matb33:collection-hooks',
        'aldeed:simple-schema',
        'aldeed:collection2',
        'accounts-base',
        'alanning:roles',
        'email'
    ], both);

    api.addFiles([
        'client/lib/XBBCode/xbbcode.js',
        'client/lib/XBBCode/xbbcode.css',
        'client/lib/notifier.js',
        'client/lib/requestAnimationFrame.js',
        'client/lib/templateParents.js',
        'client/lib/seenPosts.js',
        'client/subscriptionManager.js'
    ], 'client');

    api.addFiles([
        'client/main.html',
        'client/main.css',
        'client/init.js'
    ], 'client');

    api.addFiles([
        'client/userList/userList.html',
        'client/userList/userList.js'
    ], 'client');

    api.addFiles([
        'client/errorPage/errorPage.html'
    ], 'client');

    api.addFiles([
        'client/mainView/detailed/detailed.html',
        'client/mainView/detailed/detailed.css',
        'client/mainView/detailed/detailed.js',
        'client/mainView/reply/reply.html',
        'client/mainView/reply/reply.css',
        'client/mainView/reply/reply.js',
        'client/mainView/report/report.html',
        'client/mainView/report/report.css',
        'client/mainView/report/report.js',
        'client/mainView/main.html',
        'client/mainView/main.css',
        'client/mainView/layout.js',
        'client/mainView/partitioner.js',
        'client/mainView/camera.js',
        'client/mainView/renderer.js',
        'client/mainView/main.js'
    ], 'client');

    api.addFiles([
        'client/userProfile/userProfile.html',
        'client/userProfile/userProfile.css',
        'client/userProfile/userProfile.js'
    ], 'client');

    api.addFiles([
        'client/adminScreen/adminScreen.html',
        'client/adminScreen/adminScreen.css',
        'client/adminScreen/adminScreen.js'
    ], 'client');

    api.addAssets([
        'public/agoraforum.png'
    ], 'client');

    api.use([
        'ui',
        'session',
        'templating',
        'reactive-var',
        'utilities:avatar',
        'gwendall:body-events',
        'meteorhacks:subs-manager'
    ], 'client');
});

Package.onTest(function(api) {
    api.use('tinytest');
    api.use('agoraforum:core', ['client', 'server']);
});
<commit_msg>Removed unnecessary versioning restraint.<commit_after>/*
    Agora Forum Software
    Copyright (C) 2016 Gregory Sartucci
    License: AGPL-3.0, Check file LICENSE
*/

Package.describe({
    name: 'agoraforum:core',
    version: '0.1.3',
    summary: 'Graph-based forum',
    git: 'https://github.com/Agora-Project/agora-meteor',
    documentation: 'README.md'
});

Package.onUse(function(api) {
    both = ['client', 'server'];

    api.addFiles([
        'server/initial-data.js',
        'server/methods.js',
        'server/publish.js',
        'server/users.js'
    ], 'server');

    api.addFiles([
        'lib/identity_collections/identity_collections.js',
        'lib/grapher/layered_grapher.js',
        'lib/schemas/post.js',
        'lib/schemas/report.js',
        'lib/schemas/tag.js',
        'lib/schemas/vote.js',
        'routes.js'
    ], both);

    api.use([
        'underscore',
        'ecmascript',
        'iron:router',
	    'matb33:collection-hooks',
        'aldeed:simple-schema',
        'aldeed:collection2',
        'accounts-base',
        'alanning:roles',
        'email'
    ], both);

    api.addFiles([
        'client/lib/XBBCode/xbbcode.js',
        'client/lib/XBBCode/xbbcode.css',
        'client/lib/notifier.js',
        'client/lib/requestAnimationFrame.js',
        'client/lib/templateParents.js',
        'client/lib/seenPosts.js',
        'client/subscriptionManager.js'
    ], 'client');

    api.addFiles([
        'client/main.html',
        'client/main.css',
        'client/init.js'
    ], 'client');

    api.addFiles([
        'client/userList/userList.html',
        'client/userList/userList.js'
    ], 'client');

    api.addFiles([
        'client/errorPage/errorPage.html'
    ], 'client');

    api.addFiles([
        'client/mainView/detailed/detailed.html',
        'client/mainView/detailed/detailed.css',
        'client/mainView/detailed/detailed.js',
        'client/mainView/reply/reply.html',
        'client/mainView/reply/reply.css',
        'client/mainView/reply/reply.js',
        'client/mainView/report/report.html',
        'client/mainView/report/report.css',
        'client/mainView/report/report.js',
        'client/mainView/main.html',
        'client/mainView/main.css',
        'client/mainView/layout.js',
        'client/mainView/partitioner.js',
        'client/mainView/camera.js',
        'client/mainView/renderer.js',
        'client/mainView/main.js'
    ], 'client');

    api.addFiles([
        'client/userProfile/userProfile.html',
        'client/userProfile/userProfile.css',
        'client/userProfile/userProfile.js'
    ], 'client');

    api.addFiles([
        'client/adminScreen/adminScreen.html',
        'client/adminScreen/adminScreen.css',
        'client/adminScreen/adminScreen.js'
    ], 'client');

    api.addAssets([
        'public/agoraforum.png'
    ], 'client');

    api.use([
        'ui',
        'session',
        'templating',
        'reactive-var',
        'utilities:avatar',
        'gwendall:body-events',
        'meteorhacks:subs-manager'
    ], 'client');
});

Package.onTest(function(api) {
    api.use('tinytest');
    api.use('agoraforum:core', ['client', 'server']);
});
<|endoftext|>


<commit_before>Package.describe({
  name: 'heaven7:wsl-locations',
  version: '0.0.1',
  summary: 'Geo location package',
  git: 'https://github.com/heaven7/wsl-locations.git',
  documentation: 'README.md'
});

both = ['client','server'];

Package.onUse(function(api) {
    api.versionsFrom('1.1.0.2');

    var packages = [
        'heaven7:wsl-core'
    //    'cordova:org.apache.cordova.geolocation@0.3.10'
    ];

    api.use(packages);
    api.imply(packages);

    api.addFiles([
        'lib/both/locations.js',
        'lib/both/schemas.js'
    ], both);

    api.addFiles([
        'lib/server/publish.js',
        'lib/server/methods.js'
    ], ['server']);

    api.export(['Locations'], both);
});
<commit_msg>version constraints<commit_after>Package.describe({
  name: 'heaven7:wsl-locations',
  version: '0.0.1',
  summary: 'Geo location package',
  git: 'https://github.com/heaven7/wsl-locations.git',
  documentation: 'README.md'
});

both = ['client','server'];

Package.onUse(function(api) {
    api.versionsFrom('1.1.0.2');

    var packages = [
        'heaven7:wsl-core@0.0.1'
    //    'cordova:org.apache.cordova.geolocation@0.3.10'
    ];

    api.use(packages);
    api.imply(packages);

    api.addFiles([
        'lib/both/locations.js',
        'lib/both/schemas.js'
    ], both);

    api.addFiles([
        'lib/server/publish.js',
        'lib/server/methods.js'
    ], ['server']);

    api.export(['Locations'], both);
});
<|endoftext|>


<commit_before>Package.describe({
  name: "tmeasday:presence",
  summary: "A package to help track users' presence",
  version: "1.0.2",
  git: "https://github.com/dburles/meteor-presence.git"
});

Package.onUse(function (api) {
  api.versionsFrom('1.0');
  api.use('tracker', 'client');
  api.addFiles('lib/common.js', ['client', 'server']);
  api.addFiles('lib/client.js', 'client');
  api.addFiles('lib/server.js', 'server');

  api.export('Presences', ['client', 'server']);
  api.export('Presence', ['client', 'server']);
});
<commit_msg>version bump<commit_after>Package.describe({
  name: "tmeasday:presence",
  summary: "A package to help track users' presence",
  version: "1.0.3",
  git: "https://github.com/dburles/meteor-presence.git"
});

Package.onUse(function (api) {
  api.versionsFrom('1.0');
  api.use('tracker', 'client');
  api.addFiles('lib/common.js', ['client', 'server']);
  api.addFiles('lib/client.js', 'client');
  api.addFiles('lib/server.js', 'server');

  api.export('Presences', ['client', 'server']);
  api.export('Presence', ['client', 'server']);
});
<|endoftext|>


<commit_before>Package.describe({
  name: 'aramk:checkbox',
  summary: 'A reactive checkbox widget',
  version: '0.1.0',
  git: 'https://github.com/aramk/meteor-checkbox.git'
});

Package.on_use(function(api) {
  api.versionsFrom('METEOR@0.9.0');
  api.use([
    'templating',
    'underscore',
    'jquery',
    'aramk:utility@0.8.1'
  ], 'client');
  api.use([
    'semantic:ui-css@2.0.8'
  ], 'client', {weak: true});
  api.add_files([
    'src/checkbox.html',
    'src/checkbox.js'
  ], 'client');
});
<commit_msg>Migrated to urbanetic:utility.<commit_after>Package.describe({
  name: 'aramk:checkbox',
  summary: 'A reactive checkbox widget',
  version: '0.1.0',
  git: 'https://github.com/aramk/meteor-checkbox.git'
});

Package.on_use(function(api) {
  api.versionsFrom('METEOR@0.9.0');
  api.use([
    'templating',
    'underscore',
    'jquery',
    'urbanetic:utility@1.0.0'
  ], 'client');
  api.use([
    'semantic:ui-css@2.0.8'
  ], 'client', {weak: true});
  api.add_files([
    'src/checkbox.html',
    'src/checkbox.js'
  ], 'client');
});
<|endoftext|>


<commit_before>/*! jQuery xmbd - v0.1 - 2013-10-10
 * https://github.com/screeny05/xmbd
 * Copyright (c) 2013 Sebastian Langer
 * MIT-Licensed */
;(function($){
	$.fn.xmbd = function(){
		var $plg = this;

		$plg.current = {
			state: -1,
			provider: "",
			id: ""
		};
		// Generate a GUID to use as the players id
		$plg.guid = $plg.guid="xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx".replace(/[xy]/g,function(b){var a=16*Math.random()|0;return("x"==b?a:a&3|8).toString(16)});

		/*
		*	Small Library for triggering Events
		*/
		var events = {};
		$plg.on = function(e, fn){
			if(!events.hasOwnProperty(e))
				events[e] = [];
			events[e].push(fn);
		};
		$plg.trigger = function(e, d){
			if(events.hasOwnProperty(e))
				$(events[e]).each(function(i, e){
					e(d);
				});
		};

		/*
		*	Media Provider Library
		*	Providers need:
		*	- regex(url) [turns a full url into the video-id]
		*	- url(id, options) [turns a video-id with given options into a embeddable url]
		*	- state(s) [turns the state from the player into a yt-api-compatible state-number]
		*	- play, pause, toggle, stop, cue [should explain themselves]
		*/
		$plg.provider = {
			youtube: {
				iframe: false,
				regex: function(url){
					var m = url.match(/(?:youtube(?:-nocookie)?\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/ ]{11})/);
					if(!m)
						return false;
					else
						return m[1];
				},
				url: function(id, options){
					options = options || {};
					var params = [
						"?autoplay="	+ +(options.autoplay || false),
						"autohide="		+ (options.autohide || false ? "1" : "2"),
						"loop="			+ (options.loop || false ? "1&playlist=" + id : "0"),
						"theme="		+ (options.theme || "dark"),
						"origin="		+ encodeURIComponent(window.location.host),
						"playerapiid="	+ $plg.guid,
						"enablejsapi=1",
						"version=3",
						"rel=0"
					].join("&");

					return "//www.youtube.com/v/" + id + params;
				},
				play: function(){
					$plg.player.playVideo();
				},
				pause: function(){
					$plg.player.pauseVideo();
				},
				stop: function(){
					$plg.player.stopVideo();
				},
				cue: function(time){
					$plg.player.seekTo(time, true);
				},
				toggle: function(){
					if($plg.current.state == 1)
						$plg.action("pause");
					else
						$plg.action("play");
				}
			},
			vimeo: {
				iframe: true,
				regex: function(url){
					//Todo
				},
				url: function(id, options){
					var params = [
						"?autoplay="	+ +(options.autoplay || false),
						"byline="		+ +(options.autohide || false),
						"portrait="		+ +(options.autohide || false),
						"color="		+ (options.color || "00adef"),
						"loop="			+ +(options.loop || false),
						"player_id="	+ $plg.guid,
						"api=1"
					].join("&");
					return "//player.vimeo.com/video/" + id + params;
				},
				state: function(s){
					switch(s){
						case "finish":			return 0;
						case "play":			return 1;
						case "pause":			return 2;
						case "loadProgress":	return 3;
						case "seek":			return 5;
						case "ready":			return 9;
						default:				return s;
					}
				},
				post: function(method, value){
					value = value || true;
					var p = $("#" + $plg.guid);
					var url = window.location.protocol + p.attr("src").split("?")[0];
					p[0].contentWindow.postMessage(JSON.stringify({ method: method, value: value }), url);
				},
				play: function(){
					$plg.provider.vimeo.post("play");
				},
				pause: function(){
					$plg.provider.vimeo.post("pause");
				},
				stop: function(){
					$plg.provider.vimeo.post("unload");
				},
				cue: function(time){
					$plg.provider.vimeo.post("seekTo", time);
				},
				toggle: function(){
					if($plg.current.state == 1)
						$plg.action("pause");
					else
						$plg.action("play");
				}
			},
			dailymotion: {
				iframe: false,
				regex: function(url){
					//Todo
				},
				url: function(id, options){
					var params = [
						"?autoPlay="	+ (options.autoplay || false),
						(options.highlight == false ? "" : "highlight="	+ options.highlight),
						(options.foreground == false ? "" : "foreground="	+ options.foreground),
						(options.background == false ? "" : "background="	+ options.background),
						"playerapiid="	+ $plg.guid,
						"enableApi=1"
					].join("&");
					return "//www.dailymotion.com/swf/" + id + params
				},
				play: function(){
					$plg.player.playVideo();
				},
				pause: function(){
					$plg.player.pauseVideo();
				},
				stop: function(){
					$plg.player.stopVideo();
				},
				cue: function(time){
					$plg.player.seekTo(time);
				},
				toggle: function(){
					if($plg.current.state == 1)
						$plg.action("pause");
					else
						$plg.action("play");
				}
			}
		};

		$plg.getProviderUrl = function(prov, id, options){
			if(!$plg.provider.hasOwnProperty(prov)){
				throw new Error("Provider not supported");
				$plg.trigger("error", "Provider not supported");
			}
			return {
				url: $plg.provider[prov].url(id, options),
				iframe: $plg.provider[prov].iframe
			};
		};

		$plg.embed = function(prov, id, options){
			var embedObj = $plg.getProviderUrl(prov, id, options);
			$plg.current.provider = prov;
			$plg.current.id = id;

			if($("#" + $plg.guid).length > 0)
				$("#" + $plg.guid).remove();

			if($plg.player)
				$plg.trigger("vUnstarted");

			if(!embedObj.iframe)
				$plg.embedSWF(embedObj.url);
			else
				$plg.embedIframe(embedObj.url);
		};

		$plg.embedIframe = function(url){
			$plg.append("");
		};

		$plg.embedSWF = function(url){
			$plg.html("

");

			swfobject.embedSWF(url, $plg.guid, "100%", "380", "8", null, null, { allowScriptAccess: "always", allowFullScreen: "true" }, { id: $plg.guid }, function(e){
				if(!e.success){
					throw new Error("Unable to embed SWF");
					$plg.trigger("error", "Unable to embed SWF");
				}
			});
		};

		$plg.action = function(s){
			if($plg.provider[$plg.current.provider].hasOwnProperty(s))
				return $plg.provider[$plg.current.provider][s].apply(this, Array.prototype.slice.call(arguments, 1));
			throw new Error("No such method: " + s);
		};

		$plg.triggerStateChange = function(s){
			var t = $plg.trigger;
			t("playerChange", s);
			$plg.current.state = s;
			switch(s){
				case -1: t("vUnstarted"); break;
				case 0 : t("vEnded"); break;
				case 1 : t("vPlaying"); break;
				case 2 : t("vPaused"); break;
				case 3 : t("vBuffering"); break;
				case 5 : t("vCued"); break;
				case 9 : t("playerReady"); break;
				default: t("error", s);
			}
		};

		// Youtube-Compatible
		window["onytcstatechange_" + $plg.guid] = function(s){
			$plg.triggerStateChange(s);
			if(s == 9){
				$plg.player = document.getElementById($plg.guid);
			}
		};
		// Vimeo
		window["onvimeostatechange_" + $plg.guid] = function(s){
			s = $plg.provider.vimeo.state(s);
			$plg.triggerStateChange(s);
			if(s == 9){
				$(["pause", "finish", "play"]).each(function(i, e){
					$plg.provider.vimeo.post("addEventListener", e);
				});
			}
		};

		return $plg;
	}
}(jQuery));

// Youtube-Compatible-Provider
window.ytCompatibleReady = function(e){
	var player = document.getElementById(e);
	player.addEventListener("onStateChange", "onytcstatechange_" + e);
	player.addEventListener("onError", "onytcstatechange_" + e);
	window["onytcstatechange_" + e](9);
}

//Vimeo specific
window.onVimeoMessage = function(m){
	var data = JSON.parse(m.data);
	window["onvimeostatechange_" + data.player_id](data.event);
}
if(window.addEventListener)
	window.addEventListener('message', onVimeoMessage, false);
else
	window.attachEvent('onmessage', onVimeoMessage, false);

//Dailymotion specific
window.onDailymotionPlayerReady = window.ytCompatibleReady;
window.onYouTubePlayerReady = window.ytCompatibleReady;

<commit_msg>this should fix some problems (#3)<commit_after>/*! jQuery xmbd - v0.1 - 2013-10-10
 * https://github.com/screeny05/xmbd
 * Copyright (c) 2013 Sebastian Langer
 * MIT-Licensed */
;(function($){
	$.fn.xmbd = function(){
		var $plg = this;

		$plg.current = {
			state: -1,
			provider: "",
			id: ""
		};
		// Generate a GUID to use as the players id
		$plg.guid = $plg.guid="xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx".replace(/[xy]/g,function(b){var a=16*Math.random()|0;return("x"==b?a:a&3|8).toString(16)});

		/*
		*	Small Library for triggering Events
		*/
		var events = {};
		$plg.on = function(e, fn){
			if(!events.hasOwnProperty(e))
				events[e] = [];
			events[e].push(fn);
		};
		$plg.trigger = function(e, d){
			if(events.hasOwnProperty(e))
				$(events[e]).each(function(i, e){
					e(d);
				});
		};

		/*
		*	Media Provider Library
		*	Providers need:
		*	- regex(url) [turns a full url into the video-id]
		*	- url(id, options) [turns a video-id with given options into a embeddable url]
		*	- state(s) [turns the state from the player into a yt-api-compatible state-number]
		*	- play, pause, toggle, stop, cue [should explain themselves]
		*/
		$plg.provider = {
			youtube: {
				iframe: false,
				regex: function(url){
					var m = url.match(/(?:youtube(?:-nocookie)?\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/ ]{11})/);
					if(!m)
						return false;
					else
						return m[1];
				},
				url: function(id, options){
					options = options || {};
					var params = [
						"?autoplay="	+ +(options.autoplay || false),
						"autohide="		+ (options.autohide || false ? "1" : "2"),
						"loop="			+ (options.loop || false ? "1&playlist=" + id : "0"),
						"theme="		+ (options.theme || "dark"),
						"origin="		+ encodeURIComponent(window.location.protocol + "//" + window.location.host),
						"playerapiid="	+ $plg.guid,
						"enablejsapi=1",
						"version=3",
						"rel=0"
					].join("&");

					return "//www.youtube.com/v/" + id + params;
				},
				play: function(){
					$plg.player.playVideo();
				},
				pause: function(){
					$plg.player.pauseVideo();
				},
				stop: function(){
					$plg.player.stopVideo();
				},
				cue: function(time){
					$plg.player.seekTo(time, true);
				},
				toggle: function(){
					if($plg.current.state == 1)
						$plg.action("pause");
					else
						$plg.action("play");
				}
			},
			vimeo: {
				iframe: true,
				regex: function(url){
					//Todo
				},
				url: function(id, options){
					var params = [
						"?autoplay="	+ +(options.autoplay || false),
						"byline="		+ +(options.autohide || false),
						"portrait="		+ +(options.autohide || false),
						"color="		+ (options.color || "00adef"),
						"loop="			+ +(options.loop || false),
						"player_id="	+ $plg.guid,
						"api=1"
					].join("&");
					return "//player.vimeo.com/video/" + id + params;
				},
				state: function(s){
					switch(s){
						case "finish":			return 0;
						case "play":			return 1;
						case "pause":			return 2;
						case "loadProgress":	return 3;
						case "seek":			return 5;
						case "ready":			return 9;
						default:				return s;
					}
				},
				post: function(method, value){
					value = value || true;
					var p = $("#" + $plg.guid);
					var url = window.location.protocol + p.attr("src").split("?")[0];
					p[0].contentWindow.postMessage(JSON.stringify({ method: method, value: value }), url);
				},
				play: function(){
					$plg.provider.vimeo.post("play");
				},
				pause: function(){
					$plg.provider.vimeo.post("pause");
				},
				stop: function(){
					$plg.provider.vimeo.post("unload");
				},
				cue: function(time){
					$plg.provider.vimeo.post("seekTo", time);
				},
				toggle: function(){
					if($plg.current.state == 1)
						$plg.action("pause");
					else
						$plg.action("play");
				}
			},
			dailymotion: {
				iframe: false,
				regex: function(url){
					//Todo
				},
				url: function(id, options){
					var params = [
						"?autoPlay="	+ (options.autoplay || false),
						(options.highlight == false ? "" : "highlight="	+ options.highlight),
						(options.foreground == false ? "" : "foreground="	+ options.foreground),
						(options.background == false ? "" : "background="	+ options.background),
						"playerapiid="	+ $plg.guid,
						"enableApi=1"
					].join("&");
					return "//www.dailymotion.com/swf/" + id + params
				},
				play: function(){
					$plg.player.playVideo();
				},
				pause: function(){
					$plg.player.pauseVideo();
				},
				stop: function(){
					$plg.player.stopVideo();
				},
				cue: function(time){
					$plg.player.seekTo(time);
				},
				toggle: function(){
					if($plg.current.state == 1)
						$plg.action("pause");
					else
						$plg.action("play");
				}
			}
		};

		$plg.getProviderUrl = function(prov, id, options){
			if(!$plg.provider.hasOwnProperty(prov)){
				throw new Error("Provider not supported");
				$plg.trigger("error", "Provider not supported");
			}
			return {
				url: $plg.provider[prov].url(id, options),
				iframe: $plg.provider[prov].iframe
			};
		};

		$plg.embed = function(prov, id, options){
			if(typeof prov == "object" && typeof id == "undefined" && typeof options == "undefined"){
				if(prov.hasOwnProperty("options"))
					options = prov.options;
				if(prov.hasOwnProperty("on"))
					options.on = prov.on;
				id = prov.id;
				prov = prov.provider;
			}
			options = options || {};
			if(options.hasOwnProperty("on")){
				for(var key in options.on){
					if(options.on.hasOwnProperty(key)){
						$plg.on(key, options.on[key]);
					}
				}
			}

			var embedObj = $plg.getProviderUrl(prov, id, options);
			$plg.current.provider = prov;
			$plg.current.id = id;

			if($("#" + $plg.guid).length > 0)
				$("#" + $plg.guid).remove();

			if($plg.player)
				$plg.trigger("vUnstarted");

			if(!embedObj.iframe)
				$plg.embedSWF(embedObj.url);
			else
				$plg.embedIframe(embedObj.url);
		};

		$plg.embedIframe = function(url){
			$plg.append("");
		};

		$plg.embedSWF = function(url){
			$plg.html("

");

			swfobject.embedSWF(url, $plg.guid, "100%", "100%", "8", null, null, { allowScriptAccess: "always", allowFullScreen: "true" }, { id: $plg.guid }, function(e){
				if(!e.success){
					throw new Error("Unable to embed SWF");
					$plg.trigger("error", "Unable to embed SWF");
				}
			});
		};

		$plg.action = function(s){
			if($plg.provider[$plg.current.provider].hasOwnProperty(s))
				return $plg.provider[$plg.current.provider][s].apply(this, Array.prototype.slice.call(arguments, 1));
			throw new Error("No such method: " + s);
		};

		$plg.triggerStateChange = function(s){
			var t = $plg.trigger;
			t("playerChange", s);
			$plg.current.state = s;
			switch(s){
				case -1: t("vUnstarted"); break;
				case 0 : t("vEnded"); break;
				case 1 : t("vPlaying"); break;
				case 2 : t("vPaused"); break;
				case 3 : t("vBuffering"); break;
				case 5 : t("vCued"); break;
				case 9 : t("playerReady"); break;
				default: t("error", s);
			}
		};

		// Youtube-Compatible
		window["onytcstatechange_" + $plg.guid] = function(s){
			$plg.triggerStateChange(s);
			if(s == 9){
				$plg.player = document.getElementById($plg.guid);
			}
		};
		// Vimeo
		window["onvimeostatechange_" + $plg.guid] = function(s){
			s = $plg.provider.vimeo.state(s);
			$plg.triggerStateChange(s);
			if(s == 9){
				$(["pause", "finish", "play"]).each(function(i, e){
					$plg.provider.vimeo.post("addEventListener", e);
				});
			}
		};

		return $plg;
	}
}(jQuery));

// Youtube-Compatible-Provider
window.ytCompatibleReady = function(e){
	var player = document.getElementById(e);
	player.addEventListener("onStateChange", "onytcstatechange_" + e);
	player.addEventListener("onError", "onytcstatechange_" + e);
	window["onytcstatechange_" + e](9);
}

//Vimeo specific
window.onVimeoMessage = function(m){
	var data = JSON.parse(m.data);
	window["onvimeostatechange_" + data.player_id](data.event);
}
if(window.addEventListener)
	window.addEventListener('message', onVimeoMessage, false);
else
	window.attachEvent('onmessage', onVimeoMessage, false);

//Dailymotion specific
window.onDailymotionPlayerReady = window.ytCompatibleReady;
window.onYouTubePlayerReady = window.ytCompatibleReady;

<|endoftext|>


<commit_before>Package.describe({
  name: 'constellation:viewmodel',
  version: '0.3.4',
  summary: 'Viewmodel inspector plugin for Constellation',
  git: 'https://github.com/JackAdams/constellation-viewmodel.git',
  documentation: 'README.md',
  debugOnly: true
});

Package.onUse(function(api) {
  api.versionsFrom('1.0');

  api.use(['templating','session','blaze','underscore','tracker','reactive-var','reactive-dict'], 'client');
  api.use('constellation:console@1.3.1', 'client');
  api.use('jss:jstree@3.1.3', 'client');

  api.addFiles('viewmodel.css','client');
  api.addFiles('viewmodel.html','client');
  api.addFiles('viewmodel.js','client');

  api.imply('constellation:console');
});

Package.onTest(function(api) {
  api.use('tinytest');
});
<commit_msg>Updated dependencies<commit_after>Package.describe({
  name: 'constellation:viewmodel',
  version: '0.4.0',
  summary: 'Viewmodel inspector plugin for Constellation',
  git: 'https://github.com/JackAdams/constellation-viewmodel.git',
  documentation: 'README.md',
  debugOnly: true
});

Package.onUse(function(api) {
  api.versionsFrom('1.0');

  api.use(['templating','session','blaze','underscore','tracker','reactive-var','reactive-dict'], 'client');
  api.use('constellation:console@1.4.0', 'client');
  api.use('jss:jstree@3.1.3', 'client');

  api.addFiles('viewmodel.css','client');
  api.addFiles('viewmodel.html','client');
  api.addFiles('viewmodel.js','client');

  api.imply('constellation:console');
});

Package.onTest(function(api) {
  api.use('tinytest');
});
<|endoftext|>


<commit_before>class SocketService {
  constructor($log, SockJS, baseURLConfig, BroadcastService) {
    'ngInject';

    this.$log = $log;
    this.SockJS = SockJS;
    this.baseURLConfig = baseURLConfig;
    this.BroadcastService = BroadcastService;

    this.playerName = '';
    this.socket = null;
    this.connected = false;
    this.extendedHandler = null;
  }

  connect() {
    return new Promise( (resolve, reject) => {
      this.$log.log('connecting to sockjs');
      this.socket = new this.SockJS(this.baseURLConfig.localAPI + '/sockets');
      this.socket.onopen = () => {
        this.connected = true;
        resolve(this.connected);
      };

      this.socket.onclose = () => {
        this.connected = false;
        this.$log.log('connection closed');
        this.BroadcastService.send('server_disconnect', null);
      };

      this.socket.onmessage = ((message) => {
        this.handleMessage(message);
      });
    });
  }

  handleMessage(message) {
    this.$log.log(message);

    message = angular.fromJson(message.data);

    if(message.type === 'error') {
      this.$log.log(message.reason);
    }

    if(message.type === 'owner_disconnect') {
      this.BroadcastService.send('owner_disconnect', null);
    }

    if(this.extendedHandler != null) {
      this.extendedHandler(message);
    }
  }

  joinRoom(name, player) {
    this.$log.log('joining room');

    this.playerName = player;

    this.send({
      type: 'join_room',
      name: name,
      player: player
    });
  }

  send(obj) {

    obj.role = 'player';

    var json = angular.toJson(obj, true);
    this.socket.send(json);
  }

  disconnect() {
    if(this.socket) {
      this.socket.close();
      this.socket = null;
    }
  }
}

export default SocketService;
<commit_msg>Beautify page<commit_after>class SocketService {
  constructor($log, SockJS, baseURLConfig, BroadcastService) {
    'ngInject';

    this.$log = $log;
    this.SockJS = SockJS;
    this.baseURLConfig = baseURLConfig;
    this.BroadcastService = BroadcastService;

    this.playerName = '';
    this.socket = null;
    this.connected = false;
    this.extendedHandler = null;
  }

  connect() {
    return new Promise((resolve, reject) => {
      this.$log.log('connecting to sockjs');
      this.socket = new this.SockJS(this.baseURLConfig.localAPI + '/sockets');
      this.socket.onopen = () => {
        this.connected = true;
        resolve(this.connected);
      };

      this.socket.onclose = () => {
        this.connected = false;
        this.$log.log('connection closed');
        this.BroadcastService.send('server_disconnect', null);
      };

      this.socket.onmessage = ((message) => {
        this.handleMessage(message);
      });
    });
  }

  handleMessage(message) {
    this.$log.log(message);

    message = angular.fromJson(message.data);

    if (message.type === 'error') {
      this.$log.log(message.reason);
    }

    if (message.type === 'owner_disconnect') {
      this.BroadcastService.send('owner_disconnect', null);
    }

    if (this.extendedHandler != null) {
      this.extendedHandler(message);
    }
  }

  joinRoom(name, player) {
    this.$log.log('joining room');

    this.playerName = player;

    this.send({
      type: 'join_room',
      name: name,
      player: player
    });
  }

  send(obj) {
    if (this.socket) {
      obj.role = 'player';

      var json = angular.toJson(obj, true);

      this.socket.send(json);
    }
  }

  disconnect() {
    if (this.socket) {
      this.socket.close();
      this.socket = null;
    }
  }
}

export default SocketService;
<|endoftext|>


<commit_before>Package.describe({
  summary: "Management tools adverts for advertisements.",
  version: "1.2.2",
  name: "elie:ad-manager",
  git: "https://github.com/elie222/meteor-ad-manager.git"
});

Package.onUse(function(api) {
  configure(api);

  api.export('AdManager');
  api.export('AdManagerAdverts');
});

Package.onTest(function(api) {
  configure(api);

  api.use('tinytest');

  api.addFiles('tests/helpers.js');
  api.addFiles('tests/adManagerTests.js');

  api.export('AdManagerAdverts');
});

function configure(api) {
  api.versionsFrom('1.2');

  api.use('ecmascript');
  api.use('check');
  api.use('mongo');
  api.use('random');
  api.use('templating');
  api.use('reactive-var');
  api.use('ddp-rate-limiter@1.0.2')
  api.use('aldeed:simple-schema@1.4.0');
  api.use('aldeed:collection2@2.6.0');
  api.use('aldeed:autoform@4.0.0 || 5.0.0');
  api.use('aldeed:delete-button@2.0.0');
  api.use('mdg:validated-method@0.2.2');
  api.use('alanning:roles@1.2.14');
  api.use('zimme:collection-timestampable@1.0.9');
  api.use('okgrow:analytics@1.0.4', { weak: true });

  // both
  api.addFiles('lib/helpers.js');
  api.addFiles('lib/AdManagerAdverts.js');
  api.addFiles('lib/AdManager.js');

  // server
  api.addFiles('server/publications.js', 'server');
  api.addFiles('server/AdManager.js', 'server');

  // client
  api.addFiles('client/views/adManagerAdmin.html', 'client');
  api.addFiles('client/views/adManagerAdmin.js', 'client');
  api.addFiles('client/views/adManagerRandomAd.html', 'client');
  api.addFiles('client/views/adManagerRandomAd.js', 'client');
}<commit_msg>version bump<commit_after>Package.describe({
  summary: "Management tools adverts for advertisements.",
  version: "1.2.3",
  name: "elie:ad-manager",
  git: "https://github.com/elie222/meteor-ad-manager.git"
});

Package.onUse(function(api) {
  configure(api);

  api.export('AdManager');
  api.export('AdManagerAdverts');
});

Package.onTest(function(api) {
  configure(api);

  api.use('tinytest');

  api.addFiles('tests/helpers.js');
  api.addFiles('tests/adManagerTests.js');

  api.export('AdManagerAdverts');
});

function configure(api) {
  api.versionsFrom('1.2');

  api.use('ecmascript');
  api.use('check');
  api.use('mongo');
  api.use('random');
  api.use('templating');
  api.use('reactive-var');
  api.use('ddp-rate-limiter@1.0.2')
  api.use('aldeed:simple-schema@1.4.0');
  api.use('aldeed:collection2@2.6.0');
  api.use('aldeed:autoform@4.0.0 || 5.0.0');
  api.use('aldeed:delete-button@2.0.0');
  api.use('mdg:validated-method@0.2.2');
  api.use('alanning:roles@1.2.14');
  api.use('zimme:collection-timestampable@1.0.9');
  api.use('okgrow:analytics@1.0.4', { weak: true });

  // both
  api.addFiles('lib/helpers.js');
  api.addFiles('lib/AdManagerAdverts.js');
  api.addFiles('lib/AdManager.js');

  // server
  api.addFiles('server/publications.js', 'server');
  api.addFiles('server/AdManager.js', 'server');

  // client
  api.addFiles('client/views/adManagerAdmin.html', 'client');
  api.addFiles('client/views/adManagerAdmin.js', 'client');
  api.addFiles('client/views/adManagerRandomAd.html', 'client');
  api.addFiles('client/views/adManagerRandomAd.js', 'client');
}<|endoftext|>


<commit_before>Package.describe({
  name: 'pureadmin',
  version: '0.0.1',
  // Brief, one-line summary of the package.
  summary: '',
  // URL to the Git repository containing the source code for this package.
  git: '',
  // By default, Meteor will default to using README.md for documentation.
  // To avoid submitting documentation, set this field to null.
  documentation: 'README.md'
});

Package.onUse(function(api) {
  api.versionsFrom('1.1.0.3');
  api.use('meteorhacks:picker', 'server');
  api.use('meteorhacks:ssr', 'server');
  api.addFiles('pureadmin.js', 'server');
  api.addFiles(['output/pure-admin.css', 'output/pure-admin.js'],'client', {isAsset: true});
  api.addFiles(['index.html'], 'server', {isAsset: true});
});

Package.onTest(function(api) {
  api.use('tinytest');
  api.use('pureadmin');
  api.addFiles('pureadmin-tests.js');
});
<commit_msg>adds server files to package<commit_after>Package.describe({
  name: 'pureadmin',
  version: '0.0.1',
  // Brief, one-line summary of the package.
  summary: '',
  // URL to the Git repository containing the source code for this package.
  git: '',
  // By default, Meteor will default to using README.md for documentation.
  // To avoid submitting documentation, set this field to null.
  documentation: 'README.md'
});

Package.onUse(function(api) {
  api.versionsFrom('1.1.0.3');
  api.use('meteorhacks:picker', 'server');
  api.use('meteorhacks:ssr', 'server');
  api.addFiles('pureadmin.js', 'server');
  api.addFiles(['output/pure-admin.css', 'output/pure-admin.js'],'client', {isAsset: true});
  api.addFiles(['index.html'], 'server', {isAsset: true});
  api.addFiles(['src/packages/lib/lib.js','src/server/admin.js','src/server/pure_admin_api_methods.js'], 'server');
});

Package.onTest(function(api) {
  api.use('tinytest');
  api.use('pureadmin');
  api.addFiles('pureadmin-tests.js');
});
<|endoftext|>


<commit_before>Package.describe({
  summary: 'Accounts Templates styled for Semantic UI.',
  version: '1.13.0',
  name: 'useraccounts:semantic-ui',
  git: 'https://github.com/meteor-useraccounts/semantic-ui.git',
});

Package.on_use(function(api, where) {
  api.versionsFrom('METEOR@1.0');

  api.use([
    'templating',
    'underscore',
  ], 'client');

  api.use([
    'useraccounts:core',
  ], ['client', 'server']);

  // Requires all routing packages loads before this asking for weak dependencies.
  api.use('useraccounts:flow-routing@1.12.1', ['client', 'server'], {weak: true});
  api.use('useraccounts:iron-routing@1.12.1', ['client', 'server'], {weak: true});

  api.imply([
    'useraccounts:core@1.13.0',
  ], ['client', 'server']);

  api.add_files([
    'lib/at_error.html',
    'lib/at_error.js',
    'lib/at_form.html',
    'lib/at_form.js',
    'lib/at_input.html',
    'lib/at_input.js',
    'lib/at_message.html',
    'lib/at_message.js',
    'lib/at_nav_button.html',
    'lib/at_nav_button.js',
    'lib/at_oauth.html',
    'lib/at_oauth.js',
    'lib/at_pwd_form.html',
    'lib/at_pwd_form.js',
    'lib/at_pwd_form_btn.html',
    'lib/at_pwd_form_btn.js',
    'lib/at_pwd_link.html',
    'lib/at_pwd_link.js',
    'lib/at_reCaptcha.html',
    'lib/at_reCaptcha.js',
    'lib/at_result.html',
    'lib/at_result.js',
    'lib/at_sep.html',
    'lib/at_sep.js',
    'lib/at_signin_link.html',
    'lib/at_signin_link.js',
    'lib/at_signup_link.html',
    'lib/at_signup_link.js',
    'lib/at_social.html',
    'lib/at_social.js',
    'lib/at_terms_link.html',
    'lib/at_terms_link.js',
    'lib/at_resend_verification_email_link.html',
    'lib/at_resend_verification_email_link.js',
    'lib/at_title.html',
    'lib/at_title.js',
    'lib/full_page_at_form.html',
    'lib/at_semantic-ui.css',
  ], ['client']);
});

Package.on_test(function(api) {
  api.use([
    'useraccounts:semantic-ui',
    'useraccounts:core@1.13.0',
  ]);

  api.use([
    'accounts-password',
    'tinytest',
    'test-helpers'
  ], ['client', 'server']);

  api.add_files([
    'tests/tests.js'
  ], ['client', 'server']);
});
<commit_msg>patch release - Bump to version 1.13.1<commit_after>Package.describe({
  summary: 'Accounts Templates styled for Semantic UI.',
  version: '1.13.1',
  name: 'useraccounts:semantic-ui',
  git: 'https://github.com/meteor-useraccounts/semantic-ui.git',
});

Package.on_use(function(api, where) {
  api.versionsFrom('METEOR@1.0');

  api.use([
    'templating',
    'underscore',
  ], 'client');

  api.use([
    'useraccounts:core',
  ], ['client', 'server']);

  // Requires all routing packages loads before this asking for weak dependencies.
  api.use('useraccounts:flow-routing@1.12.1', ['client', 'server'], {weak: true});
  api.use('useraccounts:iron-routing@1.12.1', ['client', 'server'], {weak: true});

  api.imply([
    'useraccounts:core@1.13.1',
  ], ['client', 'server']);

  api.add_files([
    'lib/at_error.html',
    'lib/at_error.js',
    'lib/at_form.html',
    'lib/at_form.js',
    'lib/at_input.html',
    'lib/at_input.js',
    'lib/at_message.html',
    'lib/at_message.js',
    'lib/at_nav_button.html',
    'lib/at_nav_button.js',
    'lib/at_oauth.html',
    'lib/at_oauth.js',
    'lib/at_pwd_form.html',
    'lib/at_pwd_form.js',
    'lib/at_pwd_form_btn.html',
    'lib/at_pwd_form_btn.js',
    'lib/at_pwd_link.html',
    'lib/at_pwd_link.js',
    'lib/at_reCaptcha.html',
    'lib/at_reCaptcha.js',
    'lib/at_result.html',
    'lib/at_result.js',
    'lib/at_sep.html',
    'lib/at_sep.js',
    'lib/at_signin_link.html',
    'lib/at_signin_link.js',
    'lib/at_signup_link.html',
    'lib/at_signup_link.js',
    'lib/at_social.html',
    'lib/at_social.js',
    'lib/at_terms_link.html',
    'lib/at_terms_link.js',
    'lib/at_resend_verification_email_link.html',
    'lib/at_resend_verification_email_link.js',
    'lib/at_title.html',
    'lib/at_title.js',
    'lib/full_page_at_form.html',
    'lib/at_semantic-ui.css',
  ], ['client']);
});

Package.on_test(function(api) {
  api.use([
    'useraccounts:semantic-ui',
    'useraccounts:core@1.13.1',
  ]);

  api.use([
    'accounts-password',
    'tinytest',
    'test-helpers'
  ], ['client', 'server']);

  api.add_files([
    'tests/tests.js'
  ], ['client', 'server']);
});
<|endoftext|>


<commit_before>Package.describe({
  name: "spacejamio:loglevel",
  summary: "Minimal lightweight logging library with output that preserves line numbers.",
  version: "1.1.0_1",
  git: "https://github.com/spacejamio/meteor-loglevel.git"
});

Package.onUse(function (api) {
  api.versionsFrom('0.9.3');

  api.use(['meteor', 'application-configuration', 'coffeescript']);

  api.use(['spacejamio:chai']);

  api.addFiles('loglevel.js');
  api.addFiles('LoggerFactory.coffee');
  api.addFiles('set-loglevel.js');

  api.export('loglevel');
});

Package.onTest(function(api) {
  api.use(['coffeescript', 'spacejamio:loglevel', 'tinytest', 'spacejamio:munit']);
  api.addFiles('tests/loglevel-test.coffee');
  api.addFiles('tests/LoggerFactoryTest.coffee');
});
<commit_msg>Bump package version<commit_after>Package.describe({
  name: "spacejamio:loglevel",
  summary: "Minimal lightweight logging library with output that preserves line numbers.",
  version: "1.1.0_2",
  git: "https://github.com/spacejamio/meteor-loglevel.git"
});

Package.onUse(function (api) {
  api.versionsFrom('0.9.3');

  api.use(['meteor', 'application-configuration', 'coffeescript']);

  api.use(['spacejamio:chai']);

  api.addFiles('loglevel.js');
  api.addFiles('LoggerFactory.coffee');
  api.addFiles('set-loglevel.js');

  api.export('loglevel');
});

Package.onTest(function(api) {
  api.use(['coffeescript', 'spacejamio:loglevel', 'tinytest', 'spacejamio:munit']);
  api.addFiles('tests/loglevel-test.coffee');
  api.addFiles('tests/LoggerFactoryTest.coffee');
});
<|endoftext|>


<commit_before>// package metadata file for Meteor.js

Package.describe({
    name: 'gantrim:materialize-stylus',  // http://atmospherejs.com/materialize/materialize
    summary: 'Materialize (official): A modern responsive front-end framework based on Material Design',
    version: '1.1.8',
    git: 'https://github.com/gantrim/meteor-materialize-stylus'
});

Package.onUse(function (api) {
    api.versionsFrom('METEOR@1.6.0.1');

    api.use('stylus@2.513.13');
    api.use('jquery', 'client');
    api.imply('jquery', 'client');

    var assets = [
        'lib/font/material-design-icons/Material-Design-Icons.eot',
        'lib/font/material-design-icons/Material-Design-Icons.svg',
        'lib/font/material-design-icons/Material-Design-Icons.ttf',
        'lib/font/material-design-icons/Material-Design-Icons.woff',
        'lib/font/material-design-icons/Material-Design-Icons.woff2',
        'lib/font/roboto/Roboto-Bold.ttf',
        'lib/font/roboto/Roboto-Bold.woff',
        'lib/font/roboto/Roboto-Bold.woff2',
        'lib/font/roboto/Roboto-Light.ttf',
        'lib/font/roboto/Roboto-Light.woff',
        'lib/font/roboto/Roboto-Light.woff2',
        'lib/font/roboto/Roboto-Medium.ttf',
        'lib/font/roboto/Roboto-Medium.woff',
        'lib/font/roboto/Roboto-Medium.woff2',
        'lib/font/roboto/Roboto-Regular.ttf',
        'lib/font/roboto/Roboto-Regular.woff',
        'lib/font/roboto/Roboto-Regular.woff2',
        'lib/font/roboto/Roboto-Thin.ttf',
        'lib/font/roboto/Roboto-Thin.woff',
        'lib/font/roboto/Roboto-Thin.woff2',
    ];

    addAssets(api, assets);

    api.addFiles([
        'lib/js/bin/materialize.js',
    ], 'client');

    var stylFiles = [
        'lib/styl/components/date_picker/_default.date.import.styl',
        'lib/styl/components/date_picker/_default.import.styl',
        'lib/styl/components/date_picker/_default.time.import.styl',
        'lib/styl/components/_buttons.import.styl',
        'lib/styl/components/_cards.import.styl',
        'lib/styl/components/_carousel.import.styl',
        'lib/styl/components/_chips.import.styl',
        'lib/styl/components/_collapsible.import.styl',
        'lib/styl/components/_color.import.styl',
        'lib/styl/components/_dropdown.import.styl',
        'lib/styl/components/_form.import.styl',
        'lib/styl/components/_global.import.styl',
        'lib/styl/components/_grid.import.styl',
        'lib/styl/components/_icons-material-design.import.styl',
        'lib/styl/components/_materialbox.import.styl',
        'lib/styl/components/_mixins.import.styl',
        'lib/styl/components/_modal.import.styl',
        'lib/styl/components/_navbar.import.styl',
        'lib/styl/components/_normalize.import.styl',
        'lib/styl/components/_prefixer.import.styl',
        'lib/styl/components/_preloader.import.styl',
        'lib/styl/components/_roboto.import.styl',
        'lib/styl/components/_sideNav.import.styl',
        'lib/styl/components/_slider.import.styl',
        'lib/styl/components/_table_of_contents.import.styl',
        'lib/styl/components/_tabs.import.styl',
        'lib/styl/components/_toast.import.styl',
        'lib/styl/components/_tooltip.import.styl',
        'lib/styl/components/_typography.import.styl',
        'lib/styl/components/_variables.import.styl',
        'lib/styl/components/_waves.import.styl'
    ];

    api.addFiles(stylFiles, 'client');
    api.addFiles('lib/styl/materialize-components.styl', 'client', {isImport: true});

    api.export('Materialize', 'client');
});

function addAssets(api, assets) {
    if (api.addAssets) {
        api.addAssets(assets, 'client');
    }
    else {
        api.addFiles(assets, 'client', {isAsset: true});
    }
}
<commit_msg>switch to coagmano:stylus pkg since meteor-stylus is being deprecated<commit_after>// package metadata file for Meteor.js

Package.describe({
    name: 'gantrim:materialize-stylus',  // http://atmospherejs.com/materialize/materialize
    summary: 'Materialize (official): A modern responsive front-end framework based on Material Design',
    version: '1.1.9',
    git: 'https://github.com/gantrim/meteor-materialize-stylus'
});

Package.onUse(function (api) {
    api.versionsFrom('METEOR@1.6.1.1');

    api.use('coagmano:stylus');
    api.use('jquery', 'client');
    api.imply('jquery', 'client');

    var assets = [
        'lib/font/material-design-icons/Material-Design-Icons.eot',
        'lib/font/material-design-icons/Material-Design-Icons.svg',
        'lib/font/material-design-icons/Material-Design-Icons.ttf',
        'lib/font/material-design-icons/Material-Design-Icons.woff',
        'lib/font/material-design-icons/Material-Design-Icons.woff2',
        'lib/font/roboto/Roboto-Bold.ttf',
        'lib/font/roboto/Roboto-Bold.woff',
        'lib/font/roboto/Roboto-Bold.woff2',
        'lib/font/roboto/Roboto-Light.ttf',
        'lib/font/roboto/Roboto-Light.woff',
        'lib/font/roboto/Roboto-Light.woff2',
        'lib/font/roboto/Roboto-Medium.ttf',
        'lib/font/roboto/Roboto-Medium.woff',
        'lib/font/roboto/Roboto-Medium.woff2',
        'lib/font/roboto/Roboto-Regular.ttf',
        'lib/font/roboto/Roboto-Regular.woff',
        'lib/font/roboto/Roboto-Regular.woff2',
        'lib/font/roboto/Roboto-Thin.ttf',
        'lib/font/roboto/Roboto-Thin.woff',
        'lib/font/roboto/Roboto-Thin.woff2',
    ];

    addAssets(api, assets);

    api.addFiles([
        'lib/js/bin/materialize.js',
    ], 'client');

    var stylFiles = [
        'lib/styl/components/date_picker/_default.date.import.styl',
        'lib/styl/components/date_picker/_default.import.styl',
        'lib/styl/components/date_picker/_default.time.import.styl',
        'lib/styl/components/_buttons.import.styl',
        'lib/styl/components/_cards.import.styl',
        'lib/styl/components/_carousel.import.styl',
        'lib/styl/components/_chips.import.styl',
        'lib/styl/components/_collapsible.import.styl',
        'lib/styl/components/_color.import.styl',
        'lib/styl/components/_dropdown.import.styl',
        'lib/styl/components/_form.import.styl',
        'lib/styl/components/_global.import.styl',
        'lib/styl/components/_grid.import.styl',
        'lib/styl/components/_icons-material-design.import.styl',
        'lib/styl/components/_materialbox.import.styl',
        'lib/styl/components/_mixins.import.styl',
        'lib/styl/components/_modal.import.styl',
        'lib/styl/components/_navbar.import.styl',
        'lib/styl/components/_normalize.import.styl',
        'lib/styl/components/_prefixer.import.styl',
        'lib/styl/components/_preloader.import.styl',
        'lib/styl/components/_roboto.import.styl',
        'lib/styl/components/_sideNav.import.styl',
        'lib/styl/components/_slider.import.styl',
        'lib/styl/components/_table_of_contents.import.styl',
        'lib/styl/components/_tabs.import.styl',
        'lib/styl/components/_toast.import.styl',
        'lib/styl/components/_tooltip.import.styl',
        'lib/styl/components/_typography.import.styl',
        'lib/styl/components/_variables.import.styl',
        'lib/styl/components/_waves.import.styl'
    ];

    api.addFiles(stylFiles, 'client');
    api.addFiles('lib/styl/materialize-components.styl', 'client', {isImport: true});

    api.export('Materialize', 'client');
});

function addAssets(api, assets) {
    if (api.addAssets) {
        api.addAssets(assets, 'client');
    }
    else {
        api.addFiles(assets, 'client', {isAsset: true});
    }
}
<|endoftext|>


<commit_before>Package.describe({
  name: 'okgrow:analytics',
  version: '0.4.3',
  summary: 'Complete Google Analytics, Mixpanel, KISSmetrics (and more) integration for Meteor',
  git: 'https://github.com/okgrow/analytics',
  documentation: 'README.md'
});

Package.onUse(function(api) {
  api.versionsFrom('1.0.3.1');
  api.use('mongo');
  api.use('accounts-base', ['client', 'server'], {weak: true});
  api.use('browser-policy-content', 'server', {weak: true});

  //weak dependencies indicate we will load after the following packages
  // and constrain their versions IF another package, or app brings them in
  api.use('iron:router@1.0.7', 'client', {weak: true});
  api.use('meteorhacks:flow-router@1.17.2', 'client', {weak: true});
  api.use('kadira:flow-router@2.6.0', 'client', {weak: true});

  api.addFiles('lib/browser-policy.js', 'server');
  api.addFiles('lib/server/publications.js', 'server');
  api.addFiles([
    'lib/config.js',
    'vendor/analytics.min.js',
    'lib/meteor-analytics.js',
    'lib/collections.js'
  ], 'client');
});
<commit_msg>Bump version to 1.0.0<commit_after>Package.describe({
  name: 'okgrow:analytics',
  version: '1.0.0',
  summary: 'Complete Google Analytics, Mixpanel, KISSmetrics (and more) integration for Meteor',
  git: 'https://github.com/okgrow/analytics',
  documentation: 'README.md'
});

Package.onUse(function(api) {
  api.versionsFrom('1.0.3.1');
  api.use('mongo');
  api.use('accounts-base', ['client', 'server'], {weak: true});
  api.use('browser-policy-content', 'server', {weak: true});

  //weak dependencies indicate we will load after the following packages
  // and constrain their versions IF another package, or app brings them in
  api.use('iron:router@1.0.7', 'client', {weak: true});
  api.use('meteorhacks:flow-router@1.17.2', 'client', {weak: true});
  api.use('kadira:flow-router@2.6.0', 'client', {weak: true});

  api.addFiles('lib/browser-policy.js', 'server');
  api.addFiles('lib/server/publications.js', 'server');
  api.addFiles([
    'lib/config.js',
    'vendor/analytics.min.js',
    'lib/meteor-analytics.js',
    'lib/collections.js'
  ], 'client');
});
<|endoftext|>


<commit_before>Package.describe({
  summary: "Client and server middleware support inspired by Connect.",
  version: "1.0.0-pre3",
  git: "https://github.com/eventedmind/iron-middleware-stack"
});

Package.on_use(function (api) {
  api.use('iron:core@1.0.0-pre3');
  api.imply('iron:core');

  api.use('iron:url@1.0.0-pre3');

  api.add_files('lib/handler.js');
  api.add_files('lib/middleware_stack.js');
  api.export('Handler', {testOnly: true});
});

Package.on_test(function (api) {
  api.use('iron:middleware-stack');
  api.use('tinytest');
  api.use('test-helpers');
  api.add_files('test/handler_test.js');
  api.add_files('test/middleware_stack_test.js');
});
<commit_msg>Add underscore as package dependency<commit_after>Package.describe({
  summary: "Client and server middleware support inspired by Connect.",
  version: "1.0.0-pre3",
  git: "https://github.com/eventedmind/iron-middleware-stack"
});

Package.on_use(function (api) {
  api.use('underscore');

  api.use('iron:core@1.0.0-pre3');
  api.imply('iron:core');

  api.use('iron:url@1.0.0-pre3');

  api.add_files('lib/handler.js');
  api.add_files('lib/middleware_stack.js');
  api.export('Handler', {testOnly: true});
});

Package.on_test(function (api) {
  api.use('iron:middleware-stack');
  api.use('tinytest');
  api.use('test-helpers');
  api.add_files('test/handler_test.js');
  api.add_files('test/middleware_stack_test.js');
});
<|endoftext|>


<commit_before>Package.describe({
  name: 'drewy:simple-test',
  version: '0.1.0',

  // Brief, one-line summary of the package.
  summary: 'Dead simple unit tests that aid in programming',

  // URL to the Git repository containing the source code for this package.
  git: 'https://github.com/drew-y/simple-test',

  // By default, Meteor will default to using README.md for documentation.
  // To avoid submitting documentation, set this field to null.
  documentation: 'README.md',
});

Package.onUse(function(api) {
  api.versionsFrom('1.1.0.2');
  api.use(['ddp', 'grigio:babel@0.1.4']);
  api.addFiles('simple-test.es6.js');
  api.export(['tests', 'SimpleTest']);
});

Package.onTest(function(api) {
  api.use(['tinytest', 'test-helpers']);
  api.use('drewy:simple-test');
  api.addFiles('simple-test-tests.js');
});
<commit_msg>Prevent simple test use in production<commit_after>Package.describe({
  name: 'drewy:simple-test',
  version: '0.1.0',
  debugOnly: true,

  // Brief, one-line summary of the package.
  summary: 'Dead simple unit tests that aid in programming',

  // URL to the Git repository containing the source code for this package.
  git: 'https://github.com/drew-y/simple-test',

  // By default, Meteor will default to using README.md for documentation.
  // To avoid submitting documentation, set this field to null.
  documentation: 'README.md',
});

Package.onUse(function(api) {
  api.versionsFrom('1.1.0.2');
  api.use(['ddp', 'grigio:babel@0.1.4']);
  api.addFiles('simple-test.es6.js');
  api.export(['tests', 'SimpleTest']);
});

Package.onTest(function(api) {
  api.use(['tinytest', 'test-helpers']);
  api.use('drewy:simple-test');
  api.addFiles('simple-test-tests.js');
});
<|endoftext|>


<commit_before>Package.describe({
    summary: "Accounts Templates styled for Semantic UI.",
    version: "1.2.3",
    name: "useraccounts:semantic-ui",
    git: "https://github.com/meteor-useraccounts/semantic-ui.git",
});

Package.on_use(function(api, where) {
    api.versionsFrom("METEOR@1.0");

    api.use([
        "less",
        "templating",
    ], "client");

    api.use([
        "useraccounts:core",
    ], ["client", "server"]);

    api.imply([
        "useraccounts:core@1.2.3",
    ], ["client", "server"]);

    api.add_files([
        "lib/at_error.html",
        "lib/at_error.js",
        "lib/at_form.html",
        "lib/at_form.js",
        "lib/at_input.html",
        "lib/at_input.js",
        "lib/at_nav_button.html",
        "lib/at_nav_button.js",
        "lib/at_oauth.html",
        "lib/at_oauth.js",
        "lib/at_pwd_form.html",
        "lib/at_pwd_form.js",
        "lib/at_pwd_form_btn.html",
        "lib/at_pwd_form_btn.js",
        "lib/at_pwd_link.html",
        "lib/at_pwd_link.js",
        "lib/at_result.html",
        "lib/at_result.js",
        "lib/at_sep.html",
        "lib/at_sep.js",
        "lib/at_signin_link.html",
        "lib/at_signin_link.js",
        "lib/at_signup_link.html",
        "lib/at_signup_link.js",
        "lib/at_social.html",
        "lib/at_social.js",
        "lib/at_terms_link.html",
        "lib/at_terms_link.js",
        "lib/at_title.html",
        "lib/at_title.js",
        "lib/full_page_at_form.html",
        "lib/at_semantic-ui.less"
    ], ["client"]);
});

Package.on_test(function(api) {
    api.use([
        "useraccounts:semantic-ui",
        "useraccounts:core@1.2.3",
    ]);

    api.use([
        "accounts-password",
        "tinytest",
        "test-helpers"
    ], ["client", "server"]);

    api.add_files([
        "tests/tests.js"
    ], ["client", "server"]);
});
<commit_msg>minor release - Bump to version 1.3.0<commit_after>Package.describe({
    summary: "Accounts Templates styled for Semantic UI.",
    version: "1.3.0",
    name: "useraccounts:semantic-ui",
    git: "https://github.com/meteor-useraccounts/semantic-ui.git",
});

Package.on_use(function(api, where) {
    api.versionsFrom("METEOR@1.0");

    api.use([
        "less",
        "templating",
    ], "client");

    api.use([
        "useraccounts:core",
    ], ["client", "server"]);

    api.imply([
        "useraccounts:core@1.3.0",
    ], ["client", "server"]);

    api.add_files([
        "lib/at_error.html",
        "lib/at_error.js",
        "lib/at_form.html",
        "lib/at_form.js",
        "lib/at_input.html",
        "lib/at_input.js",
        "lib/at_nav_button.html",
        "lib/at_nav_button.js",
        "lib/at_oauth.html",
        "lib/at_oauth.js",
        "lib/at_pwd_form.html",
        "lib/at_pwd_form.js",
        "lib/at_pwd_form_btn.html",
        "lib/at_pwd_form_btn.js",
        "lib/at_pwd_link.html",
        "lib/at_pwd_link.js",
        "lib/at_result.html",
        "lib/at_result.js",
        "lib/at_sep.html",
        "lib/at_sep.js",
        "lib/at_signin_link.html",
        "lib/at_signin_link.js",
        "lib/at_signup_link.html",
        "lib/at_signup_link.js",
        "lib/at_social.html",
        "lib/at_social.js",
        "lib/at_terms_link.html",
        "lib/at_terms_link.js",
        "lib/at_title.html",
        "lib/at_title.js",
        "lib/full_page_at_form.html",
        "lib/at_semantic-ui.less"
    ], ["client"]);
});

Package.on_test(function(api) {
    api.use([
        "useraccounts:semantic-ui",
        "useraccounts:core@1.3.0",
    ]);

    api.use([
        "accounts-password",
        "tinytest",
        "test-helpers"
    ], ["client", "server"]);

    api.add_files([
        "tests/tests.js"
    ], ["client", "server"]);
});
<|endoftext|>


<commit_before>const where = 'client';

Package.describe({
  name: 'lookback:dropdowns',
  summary: 'Reactive dropdowns for Meteor.',
  version: '1.4.0',
  git: 'http://github.com/lookback/meteor-dropdowns'
});

Package.onUse(function(api) {
  api.versionsFrom('1.2');

  api.use([
    'underscore',
    'tracker',
    'ecmascript',
    'jquery',
    'reactive-dict',
    'templating',
    'check',
    'percolate:momentum@0.7.2'
  ], where);

  api.addFiles([
    'animations/animation-spring.js',
    'animations/animation-appear.js',
    'templates/dropdown.html',
    'lib/dropdown.js'
  ], where);

  api.imply('percolate:momentum@0.7.2', where);
  api.export('Dropdowns', where);
});

Package.onTest(function(api) {
  api.use([
    'coffeescript',
    'check',
    'tracker',
    'lookback:dropdowns',
    'practicalmeteor:mocha'
  ], where);

  api.addFiles('tests/DropdownTest.coffee', where);
});
<commit_msg>Explicitly use Mocha console runner for CI tests<commit_after>const where = 'client';

Package.describe({
  name: 'lookback:dropdowns',
  summary: 'Reactive dropdowns for Meteor.',
  version: '1.4.0',
  git: 'http://github.com/lookback/meteor-dropdowns'
});

Package.onUse(function(api) {
  api.versionsFrom('1.2');

  api.use([
    'underscore',
    'tracker',
    'ecmascript',
    'jquery',
    'reactive-dict',
    'templating',
    'check',
    'percolate:momentum@0.7.2'
  ], where);

  api.addFiles([
    'animations/animation-spring.js',
    'animations/animation-appear.js',
    'templates/dropdown.html',
    'lib/dropdown.js'
  ], where);

  api.imply('percolate:momentum@0.7.2', where);
  api.export('Dropdowns', where);
});

Package.onTest(function(api) {
  api.use([
    'coffeescript',
    'check',
    'tracker',
    'lookback:dropdowns',
    'practicalmeteor:mocha',
    'practicalmeteor:mocha-console-runner'
  ], where);

  api.addFiles('tests/DropdownTest.coffee', where);
});
<|endoftext|>


<commit_before>Package.describe({
    name: "socialize:base-model",
    summary: "A model for all other models to inherit from ",
    version: "0.2.3",
    git: "https://github.com/copleykj/socialize-base-model.git"
});

Package.onUse(function(api) {
    api.versionsFrom("1.0.2.1");

    api.use(["meteor", "mongo", "underscore"]);

    api.use([
        "socialize:server-time@0.1.1", "tmeasday:publish-with-relations@0.2.0", "aldeed:simple-schema@1.3.3",
        "aldeed:collection2@2.3.3", "matb33:collection-hooks@0.7.13", "meteorhacks:unblock@1.1.0"
    ]);

    api.imply(["meteor", "mongo", "underscore"]);

    api.imply([
        "tmeasday:publish-with-relations@0.2.0", "aldeed:simple-schema@1.3.3",
        "aldeed:collection2@2.3.3", "matb33:collection-hooks@0.7.13", "meteorhacks:unblock@1.1.0"
    ]);

    api.addFiles(["base-model.js", "security.js"]);

    api.export("BaseModel");
});

<commit_msg>minor version bump 0.3.0<commit_after>Package.describe({
    name: "socialize:base-model",
    summary: "A model for all other models to inherit from ",
    version: "0.3.0",
    git: "https://github.com/copleykj/socialize-base-model.git"
});

Package.onUse(function(api) {
    api.versionsFrom("1.0.2.1");

    api.use(["meteor", "mongo", "underscore"]);

    api.use([
        "socialize:server-time@0.1.1", "tmeasday:publish-with-relations@0.2.0", "aldeed:simple-schema@1.3.3",
        "aldeed:collection2@2.3.3", "matb33:collection-hooks@0.7.13", "meteorhacks:unblock@1.1.0"
    ]);

    api.imply(["meteor", "mongo", "underscore"]);

    api.imply([
        "tmeasday:publish-with-relations@0.2.0", "aldeed:simple-schema@1.3.3",
        "aldeed:collection2@2.3.3", "matb33:collection-hooks@0.7.13", "meteorhacks:unblock@1.1.0"
    ]);

    api.addFiles(["base-model.js", "security.js"]);

    api.export("BaseModel");
});

<|endoftext|>


<commit_before>Package.describe({
  name: 'space:tracker-mobx-autorun',
  version: '0.1.0',
  summary: 'Integrate Meteor reactive data with MobX using autorun functions',
  git: 'https://github.com/meteor-space/reaction.git',
  documentation: 'README.md'
});

Package.onUse(function(api) {
  api.versionsFrom('1.3');
  api.use('ecmascript');
  api.use('tracker');
  api.use('tmeasday:check-npm-versions@0.3.1');
  api.mainModule('index.js', 'client');
});
<commit_msg>Fix outdated Github link in package.js<commit_after>Package.describe({
  name: 'space:tracker-mobx-autorun',
  version: '0.1.0',
  summary: 'Integrate Meteor reactive data with MobX using autorun functions',
  git: 'https://github.com/meteor-space/tracker-mobx-autorun.git',
  documentation: 'README.md'
});

Package.onUse(function(api) {
  api.versionsFrom('1.3');
  api.use('ecmascript');
  api.use('tracker');
  api.use('tmeasday:check-npm-versions@0.3.1');
  api.mainModule('index.js', 'client');
});
<|endoftext|>