@progress/kendo-typescript-tasks 10.0.17-dev.8 → 10.0.18-ng12.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,21 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [10.0.17](https://github.com/telerik/kendo-build-tasks/compare/@progress/kendo-typescript-tasks@10.0.16...@progress/kendo-typescript-tasks@10.0.17) (2022-03-01)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **kendo-package-tasks:** do not include peer dependencies in CDN bundles ([fd36d5f](https://github.com/telerik/kendo-build-tasks/commit/fd36d5f5a15c0cf93ff07a3873384ce354f9a5b8))
12
+ * **typescript-tasks:** API page title for common packages ([99791a4](https://github.com/telerik/kendo-build-tasks/commit/99791a4cf7ab9cfc166f6c1d1623ca494123414b))
13
+ * **typescript-tasks:** stringLiteral api generation ([43bb598](https://github.com/telerik/kendo-build-tasks/commit/43bb598f7dc600fc0dde9a0aa6b3b94fe77a5e45))
14
+ * **typescript-tasks:** union reference api generation ([0c44752](https://github.com/telerik/kendo-build-tasks/commit/0c4475220a9352cdc996c7962c2426bae6e85470))
15
+ * **typescript-tasks:** use correct imports in CDN bundle ([74d06dd](https://github.com/telerik/kendo-build-tasks/commit/74d06dd78e641990791b30f537aa2871de6c71a7))
16
+
17
+
18
+
19
+
20
+
6
21
  ## [10.0.16](https://github.com/telerik/kendo-build-tasks/compare/@progress/kendo-typescript-tasks@10.0.15...@progress/kendo-typescript-tasks@10.0.16) (2021-12-03)
7
22
 
8
23
  **Note:** Version bump only for package @progress/kendo-typescript-tasks
package/api.config.js CHANGED
@@ -1,22 +1,8 @@
1
- const os = require('os');
2
1
  const path = require('path');
3
2
 
4
- const jsonPath = path.join(os.tmpdir(), `api-${process.pid}.json`);
3
+ const jsonPath = path.resolve('./api.json');
5
4
  const typedoc = {
6
- // TypeScript options
7
- module: 'commonjs',
8
- target: 'es6',
9
- types: [],
10
- experimentalDecorators: true,
11
- jsx: 'react', // support for tsx files
12
-
13
- // Output options
14
- json: jsonPath,
15
-
16
- // Typedoc options
17
- excludeExternals: true,
18
- ignoreCompilerErrors: false,
19
- includeDeclarations: true
5
+ excludeExternals: true
20
6
  };
21
7
 
22
8
  module.exports = {
package/api.js CHANGED
@@ -2,22 +2,41 @@
2
2
 
3
3
  const execSync = require('child_process').execSync;
4
4
  const path = require('path');
5
- const typedoc = require('gulp-typedoc');
6
- const deepAssign = require('lodash.merge');
5
+ const { merge } = require('lodash');
6
+ const typedoc = require('typedoc');
7
+ const glob = require('glob');
7
8
 
8
9
  const api = require('./src/api/generator.js');
9
10
  const apiConfig = require('./api.config.js');
10
11
 
11
12
  module.exports = (gulp, userConfig) => {
12
13
  const series = gulp.series;
13
- const parallel = gulp.parallel;
14
14
 
15
- const config = deepAssign({}, apiConfig, userConfig);
16
- const DECLARATIONS = ["typings/index.d.ts", "node_modules/@types/core-js/index.d.ts"];
15
+ const config = merge({}, apiConfig, userConfig);
17
16
 
18
- gulp.task('api-json', () => {
19
- return gulp.src(["src/**/*.{ts,tsx}", ...DECLARATIONS, ...(config.externalApi || [])], { "allowEmpty": true })
20
- .pipe(typedoc(config.typedoc));
17
+ gulp.task('api-json', async (done) => {
18
+ const entryPoints = [
19
+ ...glob.sync("src/**/*.{ts,tsx}"),
20
+ ...(config.externalApi || [])
21
+ ];
22
+
23
+ const app = new typedoc.Application();
24
+ app.options.addReader(new typedoc.TSConfigReader());
25
+ app.bootstrap({ ...config.typedoc, entryPoints });
26
+
27
+ const project = app.convert();
28
+ if (!project) {
29
+ done(new Error('Unable to initialize TypeDoc.'));
30
+ return;
31
+ }
32
+
33
+ await app.generateJson(project, apiConfig.jsonPath);
34
+ if (app.logger.hasErrors()) {
35
+ done(new Error('Unable to generate API reference, see messages above.'));
36
+ return;
37
+ }
38
+
39
+ done();
21
40
  });
22
41
 
23
42
  gulp.task('api-clean', (done) => {
package/gulp-tasks.js CHANGED
@@ -3,11 +3,10 @@
3
3
  const del = require('del');
4
4
  const childProcess = require('child_process');
5
5
  const path = require('path');
6
- const gulpTsLint = require('gulp-tslint');
7
- const tslint = require('tslint');
8
6
 
9
7
  const apiTasks = require('./api.js');
10
8
  const commonTasks = require('@progress/kendo-common-tasks');
9
+ const linter = require('./src/linter');
11
10
 
12
11
  const webpackConfig = require('./webpack.config.js');
13
12
  const tscPath = path.join(process.cwd(), 'node_modules', '.bin', 'tsc');
@@ -37,29 +36,15 @@ module.exports = (gulp, libraryName, compilerPath, options, webpackConfigPath) =
37
36
  done()
38
37
  });
39
38
 
40
- gulp.task('lint', series('check-compilation', (done) => {
41
- const program = tslint.Linter.createProgram('./tsconfig.json', '.');
39
+ gulp.task('lint', series(
40
+ 'check-compilation',
41
+ linter([ 'src/**/*.{ts,tsx}', 'test/**/*.{ts,tsx}', 'e2e/**/*.{ts,tsx}' ])
42
+ ));
42
43
 
43
- return gulp.src([ 'src/**/*.{ts,tsx}', 'test/**/*.{ts,tsx}', 'e2e/**/*.{ts,tsx}' ])
44
- .pipe(gulpTsLint({
45
- program: program,
46
- formatter: 'verbose'
47
- }))
48
- .pipe(gulpTsLint.report());
44
+ gulp.task('lint-docs', linter([ 'docs/examples/**/*.{ts,tsx}' ], {
45
+ overrideConfigFile: '.eslintrc.docs.json'
49
46
  }));
50
47
 
51
- gulp.task('lint-docs', () => {
52
- const program = tslint.Linter.createProgram('./tsconfig.docs.json', '.');
53
-
54
- return gulp.src([ 'docs/examples/**/*.{ts,tsx}'])
55
- .pipe(gulpTsLint({
56
- formatter: 'prose',
57
- program: program,
58
- configuration: './tslint.docs.json'
59
- }))
60
- .pipe(gulpTsLint.report());
61
- });
62
-
63
48
  gulp.task('start', (done) => {
64
49
  const webpackPort = 8888;
65
50
  const host = listenAddress;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@progress/kendo-typescript-tasks",
3
3
  "description": "Kendo UI TypeScript package gulp tasks",
4
4
  "main": "gulp-tasks.js",
5
- "version": "10.0.17-dev.8+bd7ee38",
5
+ "version": "10.0.18-ng12.43+a7def87",
6
6
  "author": "Telerik",
7
7
  "license": "Apache-2.0",
8
8
  "scripts": {
@@ -15,29 +15,31 @@
15
15
  "API Generation"
16
16
  ],
17
17
  "peerDependencies": {
18
- "typescript": "^3.4.5"
18
+ "typescript": "^4.3.4"
19
19
  },
20
20
  "dependencies": {
21
- "@progress/kendo-common-tasks": "^7.9.1-dev.8+bd7ee38",
22
- "core-js": "^2.2.2",
21
+ "@progress/kendo-common-tasks": "ng12",
22
+ "@typescript-eslint/eslint-plugin": "4.28.2",
23
+ "@typescript-eslint/parser": "4.28.2",
24
+ "core-js": "^3.18.0",
23
25
  "del": "2.2.2",
26
+ "eslint": "7.32.0",
27
+ "eslint-plugin-import": "2.25.2",
28
+ "eslint-plugin-rxjs": "3.3.7",
29
+ "glob": "^7.2.0",
24
30
  "gulp": "^4.0.0",
25
31
  "gulp-add-src": "^1.0.0",
26
- "gulp-tslint": "^8.0.0",
27
- "gulp-typedoc": "~2.2.2",
28
32
  "handlebars": "^4.0.5",
29
33
  "highlight.js": "9.14.2",
30
- "lodash.merge": "^4.6.0",
34
+ "lodash": "^4.6.0",
31
35
  "mkdirp": "^0.5.0",
32
36
  "source-map-loader": "^0.1.5",
33
37
  "ts-loader": "4.1.0",
34
- "tslint": "^5.0.0",
35
- "tslint-defocus": "^2.0.6",
36
- "typedoc": "0.15.0"
38
+ "typedoc": "~0.22.5"
37
39
  },
38
40
  "devDependencies": {
39
41
  "gulp-jasmine": "^2.4.2",
40
- "typescript": "~3.4.5"
42
+ "typescript": "~4.3.4"
41
43
  },
42
44
  "repository": {
43
45
  "type": "git",
@@ -46,5 +48,5 @@
46
48
  "publishConfig": {
47
49
  "access": "public"
48
50
  },
49
- "gitHead": "bd7ee38731bff7c723427f0c61b9d2b7fdb8f001"
51
+ "gitHead": "a7def87e4b0294e9b589f8a7c739630490b0cbc2"
50
52
  }
@@ -22,7 +22,7 @@ const findDecorator = (decorators) => ((decorators || []).find(d =>
22
22
  const decoratorProp = (prop) => (decorators) => {
23
23
  const compDecorator = findDecorator(decorators);
24
24
 
25
- if (compDecorator) {
25
+ if (compDecorator) {
26
26
  const regExp = new RegExp(`${prop}:\\s?['"](.+?)['"]`);
27
27
  const match = compDecorator.arguments.obj.match(regExp);
28
28
 
@@ -83,13 +83,11 @@ const normalizeUnionReferences = (element, members) => {
83
83
  return child.name === type.name;
84
84
  });
85
85
 
86
- let toReplace = [];
87
86
  if (unionReference && unionReference.kind === 'union') {
88
87
  normalizeUnionReferences(unionReference, members);
89
- toReplace = unionReference.type.types;
88
+ const toReplace = unionReference.type.types;
89
+ types.splice.apply(types, [idx, 1].concat(toReplace));
90
90
  }
91
-
92
- types.splice.apply(types, [idx, 1].concat(toReplace));
93
91
  }
94
92
  }
95
93
  }
@@ -112,6 +110,11 @@ const normalizeMembers = (members) => {
112
110
  }
113
111
  }
114
112
  }
113
+
114
+ if (!element.comment && element.kindString === 'Accessor') {
115
+ const accessor = element.getSignature || element.setSignature || [];
116
+ element.comment = accessor[0].comment;
117
+ }
115
118
  });
116
119
  }
117
120
 
@@ -150,7 +153,7 @@ const extractMembers = (packageName, modules, config) => {
150
153
 
151
154
  const models = nonEmptyModules.map(module => module
152
155
  .children
153
- .filter(child => child.flags.isExported)
156
+ .filter(child => child.kindString !== "Reference")
154
157
  .filter(child => child.name !== 'core')
155
158
  .map(child => {
156
159
  const fullName = moduleFullName(module.name, packageName, rootModules);
@@ -197,7 +200,6 @@ const namespacesAsModules = data => {
197
200
  const modules = [];
198
201
  data.filter(moduleFilter).forEach(module => module
199
202
  .children
200
- .filter(child => child.flags.isExported)
201
203
  .filter(child => child.name !== 'core')
202
204
  .forEach(child => {
203
205
  if (child.kindString === 'Module' && child.children) {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: {{friendlyName}} API
3
- page_title: {{platform}} {{friendlyName}} API | Kendo UI for {{platform}}
3
+ page_title: {{platform}} {{friendlyName}} API | Kendo UI{{#if platform}} for {{platform}}{{/if}}
4
4
  description: "Learn how to build custom functionality of the {{platform}} {{friendlyName}} by Kendo UI with the help of the options available in the API."
5
5
  slug: {{slug}}
6
6
  api_reference: true
@@ -9,8 +9,13 @@ const utils = require('./utils');
9
9
  const isConstructor = (prop) =>
10
10
  prop.kindString && prop.kindString === 'Constructor' && isPublic(prop);
11
11
 
12
- const mapConstructors = (member) =>
13
- utils.flatten(member.children.filter(isConstructor).map(ctr => {
12
+ const mapConstructors = (member) => {
13
+ if (member.decorators && member.decorators.find(d => d.name === 'NgModule')) {
14
+ // Ignore NgModule constructors
15
+ return [];
16
+ }
17
+
18
+ return utils.flatten(member.children.filter(isConstructor).map(ctr => {
14
19
  const name = ctr.name;
15
20
  const source = `${member.name}.constructor`;
16
21
 
@@ -21,6 +26,7 @@ const mapConstructors = (member) =>
21
26
  params: types.params(signature, source)
22
27
  }));
23
28
  }));
29
+ };
24
30
 
25
31
  module.exports = mapConstructors;
26
32
 
@@ -5,7 +5,7 @@ const comment = require('./comment');
5
5
  const unionTypes = (member) =>
6
6
  member.type.types.map(type => {
7
7
  switch (type.type) {
8
- case 'stringLiteral':
8
+ case 'literal':
9
9
  return `"${type.value}"`;
10
10
  default:
11
11
  return typeString({ type });
@@ -135,6 +135,10 @@ const typeString = (prop) => {
135
135
  return unionTypes(prop).join(' | ');
136
136
  }
137
137
 
138
+ if (type.type === 'stringLiteral') {
139
+ return `'${type.value}'`;
140
+ }
141
+
138
142
  return singleTypeString(prop.type);
139
143
  };
140
144
 
@@ -3,7 +3,7 @@
3
3
  # {{name}}
4
4
  {{comment}}
5
5
 
6
- ## Values
6
+ ## Members
7
7
 
8
8
  {{#each types}}
9
9
  * {{this}}
package/src/linter.js ADDED
@@ -0,0 +1,18 @@
1
+ const { ESLint } = require('eslint');
2
+
3
+ const linter = (files, options = {}) => async function lint(done) {
4
+ const eslint = new ESLint(options);
5
+ const results = await eslint.lintFiles(files);
6
+ const formatter = await eslint.loadFormatter('stylish');
7
+ const errors = ESLint.getErrorResults(results)
8
+ const resultText = formatter.format(results);
9
+ console.log(resultText);
10
+
11
+ if (errors.length > 0) {
12
+ done(new Error('Lint failed.'));
13
+ } else {
14
+ done();
15
+ }
16
+ }
17
+
18
+ module.exports = linter;
package/webpack.config.js CHANGED
@@ -1,5 +1,6 @@
1
- const commonTasks = require('@progress/kendo-common-tasks');
2
1
  const path = require('path');
2
+ const commonTasks = require('@progress/kendo-common-tasks');
3
+ const { umdExternals } = require('@progress/kendo-common-tasks/umd-externals');
3
4
 
4
5
  const sourceExtensions = [ '.ts' ];
5
6
  const nodeModulesPath = path.join(__dirname, 'node_modules');
@@ -8,36 +9,9 @@ const resolve = commonTasks.resolveConfig(sourceExtensions, nodeModulesPath);
8
9
 
9
10
  const packageInfo = require(path.join(process.cwd(), 'package.json'));
10
11
  const packageKeys = (key) => Object.keys(packageInfo[key] || {});
11
-
12
+ const peerDependencies = packageKeys('peerDependencies');
13
+ const allDependencies = packageKeys('dependencies').concat(peerDependencies);
12
14
  const matchStartsWith = (key) => new RegExp(`^${key}`);
13
- const deps = packageKeys('dependencies').concat(packageKeys('peerDependencies'));
14
- const packageDependencies = deps.map(matchStartsWith);
15
-
16
- //list all Angular packages that should not appear in CDN bundles
17
- const angularPeers = [
18
- '@angular/animations'
19
- ];
20
-
21
- //list all packages that should not appear in CDN bundles
22
- const peers = [
23
- '@progress/kendo-angular-intl',
24
- '@progress/kendo-angular-l10n',
25
- '@progress/kendo-drawing'
26
- ];
27
- const internal = dep => dep.match(/@progress|@telerik/);
28
- const isPeer = dep => peers.find(pkg => pkg === dep);
29
- const isException = dep => dep.match(/tslib/);
30
-
31
- const prebuilt = [
32
- /jszip[\/\\]dist[\/\\]jszip.js/,
33
- /pako[\/\\]dist[\/\\]pako_deflate.js/
34
- ];
35
-
36
- const cdnExternals = deps
37
- .filter((dep) => ((!internal(dep) || isPeer(dep)) && !isException(dep)))
38
- .concat(angularPeers)
39
- .map(matchStartsWith);
40
-
41
15
 
42
16
  const tsLoader = (compilerOptions) => ({
43
17
  test: /\.ts?$/,
@@ -48,8 +22,21 @@ const tsLoader = (compilerOptions) => ({
48
22
  }
49
23
  });
50
24
 
25
+ const cdn = commonTasks.webpackCommonConfig({
26
+ resolve,
27
+ stats: { assets: false },
28
+ output: { libraryTarget: 'umd' },
29
+ plugins: [],
30
+ optimization: {
31
+ minimize: true
32
+ },
33
+ module: {
34
+ rules: [ tsLoader({ declaration: false }) ]
35
+ }
36
+ });
51
37
 
52
38
  module.exports = {
39
+ // dist/npm
53
40
  npmPackage: commonTasks.webpackCommonConfig({
54
41
  resolve,
55
42
 
@@ -58,7 +45,7 @@ module.exports = {
58
45
  externals: [
59
46
  /^\.\//,
60
47
  /^\.\.\//
61
- ].concat(packageDependencies),
48
+ ].concat(allDependencies.map(matchStartsWith)),
62
49
 
63
50
  module: {
64
51
  rules: [ tsLoader({ sourceMap: true }) ]
@@ -67,33 +54,25 @@ module.exports = {
67
54
  devtool: 'source-map'
68
55
  }),
69
56
 
70
- CDN: commonTasks.webpackCommonConfig({
71
- resolve,
57
+ // dist/cdn/js/<package-name>.js
58
+ CDN: {
59
+ ...cdn,
60
+ externals: umdExternals(peerDependencies)
61
+ },
72
62
 
73
- stats: { assets: false },
74
-
75
- output: { libraryTarget: 'umd' },
76
-
77
- plugins: [
78
- ],
79
- optimization: {
80
- minimize: true
81
- },
82
- externals: cdnExternals,
83
-
84
- module: {
85
- rules: [ tsLoader({ declaration: false }) ],
86
- noParse: prebuilt
87
- }
88
- }),
63
+ // dist/cdn/main.js
64
+ umdPackage: {
65
+ ...cdn,
66
+ externals: umdExternals(allDependencies)
67
+ },
89
68
 
90
69
  dev: commonTasks.webpackDevConfig({
91
70
  resolve,
92
71
  rules: [ tsLoader({ sourceMap: true }) ],
93
- noParse: prebuilt,
94
72
  entries: 'examples/**/*.ts'
95
73
  }),
96
74
 
75
+ // dist/systemjs/<package-name>.js
97
76
  systemjs: commonTasks.webpackCommonConfig({
98
77
  resolve,
99
78
 
@@ -102,25 +81,5 @@ module.exports = {
102
81
  module: {
103
82
  rules: [ tsLoader({ declaration: false }) ]
104
83
  }
105
- }),
106
-
107
- umdPackage: commonTasks.webpackCommonConfig({
108
- resolve,
109
-
110
- stats: { assets: false },
111
-
112
- output: { libraryTarget: 'umd' },
113
-
114
- externals: packageDependencies,
115
-
116
- plugins: [
117
- ],
118
- optimization: {
119
- minimize: true
120
- },
121
- module: {
122
- rules: [ tsLoader({ declaration: false }) ],
123
- noParse: prebuilt
124
- }
125
84
  })
126
85
  };