Move externs to types folder
Also support auto-load all types from types folder for template test. Change-Id: I113d9dd69b6f1b1e016dcf0b00e942446bbb6a6f
This commit is contained in:
		@@ -1,47 +1,6 @@
 | 
			
		||||
const fs = require('fs');
 | 
			
		||||
const twinkie = require('fried-twinkie');
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * For the purposes of template type checking, externs should be added for
 | 
			
		||||
 * anything set on the window object. Note that sub-properties of these
 | 
			
		||||
 * declared properties are considered something separate.
 | 
			
		||||
 */
 | 
			
		||||
const EXTERN_NAMES = [
 | 
			
		||||
  'Gerrit',
 | 
			
		||||
  'GrAnnotation',
 | 
			
		||||
  'GrAttributeHelper',
 | 
			
		||||
  'GrChangeActionsInterface',
 | 
			
		||||
  'GrChangeReplyInterface',
 | 
			
		||||
  'GrDiffBuilder',
 | 
			
		||||
  'GrDiffBuilderImage',
 | 
			
		||||
  'GrDiffBuilderSideBySide',
 | 
			
		||||
  'GrDiffBuilderUnified',
 | 
			
		||||
  'GrDiffGroup',
 | 
			
		||||
  'GrDiffLine',
 | 
			
		||||
  'GrDomHooks',
 | 
			
		||||
  'GrEditConstants',
 | 
			
		||||
  'GrEtagDecorator',
 | 
			
		||||
  'GrFileListConstants',
 | 
			
		||||
  'GrGapiAuth',
 | 
			
		||||
  'GrGerritAuth',
 | 
			
		||||
  'GrLinkTextParser',
 | 
			
		||||
  'GrPluginEndpoints',
 | 
			
		||||
  'GrPopupInterface',
 | 
			
		||||
  'GrRangeNormalizer',
 | 
			
		||||
  'GrReporting',
 | 
			
		||||
  'GrReviewerUpdatesParser',
 | 
			
		||||
  'GrCountStringFormatter',
 | 
			
		||||
  'GrThemeApi',
 | 
			
		||||
  'SiteBasedCache',
 | 
			
		||||
  'FetchPromisesCache',
 | 
			
		||||
  'GrRestApiHelper',
 | 
			
		||||
  'GrDisplayNameUtils',
 | 
			
		||||
  'GrReviewerSuggestionsProvider',
 | 
			
		||||
  'moment',
 | 
			
		||||
  'page',
 | 
			
		||||
  'util',
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
fs.readdir('./polygerrit-ui/temp/behaviors/', (err, data) => {
 | 
			
		||||
  if (err) {
 | 
			
		||||
    console.log('error /polygerrit-ui/temp/behaviors/ directory');
 | 
			
		||||
@@ -89,37 +48,39 @@ fs.readdir('./polygerrit-ui/temp/behaviors/', (err, data) => {
 | 
			
		||||
    mappings = mappingSpecificFile;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  additionalSources.push({
 | 
			
		||||
    path: 'custom-externs.js',
 | 
			
		||||
    src: '/** @externs */' +
 | 
			
		||||
        EXTERN_NAMES.map( name => { return `var ${name};`; }).join(' '),
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  /** Types in Gerrit */
 | 
			
		||||
  additionalSources.push({
 | 
			
		||||
    path: './polygerrit-ui/app/types/types.js',
 | 
			
		||||
    src: fs.readFileSync(
 | 
			
		||||
        `./polygerrit-ui/app/types/types.js`, 'utf-8'),
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  const toCheck = [];
 | 
			
		||||
  for (key of Object.keys(mappings)) {
 | 
			
		||||
    if (mappings[key].html && mappings[key].js) {
 | 
			
		||||
      toCheck.push({
 | 
			
		||||
        htmlSrcPath: mappings[key].html,
 | 
			
		||||
        jsSrcPath: mappings[key].js,
 | 
			
		||||
        jsModule: 'polygerrit.' + mappings[key].package,
 | 
			
		||||
  /**
 | 
			
		||||
   * Types in Gerrit.
 | 
			
		||||
   * All types should be under `./polygerrit-ui/app/types` folder and end with `js`.
 | 
			
		||||
   */
 | 
			
		||||
  fs.readdir('./polygerrit-ui/app/types/', (err, typeFiles) => {
 | 
			
		||||
    for (const typeFile of typeFiles) {
 | 
			
		||||
      if (!typeFile.endsWith('.js')) continue;
 | 
			
		||||
      additionalSources.push({
 | 
			
		||||
        path: `./polygerrit-ui/app/types/${typeFile}`,
 | 
			
		||||
        src: fs.readFileSync(
 | 
			
		||||
            `./polygerrit-ui/app/types/${typeFile}`, 'utf-8'),
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  twinkie.checkTemplate(toCheck, additionalSources)
 | 
			
		||||
      .then(() => {}, joinedErrors => {
 | 
			
		||||
        if (joinedErrors) {
 | 
			
		||||
    const toCheck = [];
 | 
			
		||||
    for (key of Object.keys(mappings)) {
 | 
			
		||||
      if (mappings[key].html && mappings[key].js) {
 | 
			
		||||
        toCheck.push({
 | 
			
		||||
          htmlSrcPath: mappings[key].html,
 | 
			
		||||
          jsSrcPath: mappings[key].js,
 | 
			
		||||
          jsModule: 'polygerrit.' + mappings[key].package,
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    twinkie.checkTemplate(toCheck, additionalSources)
 | 
			
		||||
        .then(() => {}, joinedErrors => {
 | 
			
		||||
          if (joinedErrors) {
 | 
			
		||||
            process.exit(1);
 | 
			
		||||
          }
 | 
			
		||||
        }).catch(e => {
 | 
			
		||||
          console.error(e);
 | 
			
		||||
          process.exit(1);
 | 
			
		||||
        }
 | 
			
		||||
      }).catch(e => {
 | 
			
		||||
        console.error(e);
 | 
			
		||||
        process.exit(1);
 | 
			
		||||
      });
 | 
			
		||||
        });
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										63
									
								
								polygerrit-ui/app/types/custom-externs.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								polygerrit-ui/app/types/custom-externs.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,63 @@
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright (C) 2019 The Android Open Source Project
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 * http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * For the purposes of template type checking, externs should be added for
 | 
			
		||||
 * anything set on the window object. Note that sub-properties of these
 | 
			
		||||
 * declared properties are considered something separate.
 | 
			
		||||
 *
 | 
			
		||||
 * This file is only for template type checking, not used in Gerrit code.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* eslint-disable no-var */
 | 
			
		||||
/* eslint-disable no-unused-vars */
 | 
			
		||||
/** @externs */
 | 
			
		||||
// @unused
 | 
			
		||||
 | 
			
		||||
var Gerrit;
 | 
			
		||||
var GrAnnotation;
 | 
			
		||||
var GrAttributeHelper;
 | 
			
		||||
var GrChangeActionsInterface;
 | 
			
		||||
var GrChangeReplyInterface;
 | 
			
		||||
var GrDiffBuilder;
 | 
			
		||||
var GrDiffBuilderImage;
 | 
			
		||||
var GrDiffBuilderSideBySide;
 | 
			
		||||
var GrDiffBuilderUnified;
 | 
			
		||||
var GrDiffGroup;
 | 
			
		||||
var GrDiffLine;
 | 
			
		||||
var GrDomHooks;
 | 
			
		||||
var GrEditConstants;
 | 
			
		||||
var GrEtagDecorator;
 | 
			
		||||
var GrFileListConstants;
 | 
			
		||||
var GrGapiAuth;
 | 
			
		||||
var GrGerritAuth;
 | 
			
		||||
var GrLinkTextParser;
 | 
			
		||||
var GrPluginEndpoints;
 | 
			
		||||
var GrPopupInterface;
 | 
			
		||||
var GrRangeNormalizer;
 | 
			
		||||
var GrReporting;
 | 
			
		||||
var GrReviewerUpdatesParser;
 | 
			
		||||
var GrCountStringFormatter;
 | 
			
		||||
var GrThemeApi;
 | 
			
		||||
var SiteBasedCache;
 | 
			
		||||
var FetchPromisesCache;
 | 
			
		||||
var GrRestApiHelper;
 | 
			
		||||
var GrDisplayNameUtils;
 | 
			
		||||
var GrReviewerSuggestionsProvider;
 | 
			
		||||
var moment;
 | 
			
		||||
var page;
 | 
			
		||||
var util;
 | 
			
		||||
		Reference in New Issue
	
	Block a user