mirror of
https://github.com/danielsogl/awesome-cordova-plugins.git
synced 2026-02-16 00:00:02 +08:00
Compare commits
41 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
df64486a13 | ||
|
|
a1e68a0934 | ||
|
|
a9a511d0f1 | ||
|
|
b6d0e3125d | ||
|
|
d4a9abfc61 | ||
|
|
a5ed62e56a | ||
|
|
7d0f1bd3ff | ||
|
|
a151295654 | ||
|
|
e4fc01a23c | ||
|
|
2fdf61ad5c | ||
|
|
25d5169251 | ||
|
|
cd7612e32e | ||
|
|
4e5b3fa910 | ||
|
|
5589f4d2ff | ||
|
|
841f151b4d | ||
|
|
ead99b1a4f | ||
|
|
cd5ff68bc1 | ||
|
|
261e9cc249 | ||
|
|
0e2d5ac1de | ||
|
|
87916aec20 | ||
|
|
072fe8df94 | ||
|
|
0750e03e04 | ||
|
|
bf2ba2e9e7 | ||
|
|
91c879af27 | ||
|
|
ee40475891 | ||
|
|
b012bb62d7 | ||
|
|
5ccc558380 | ||
|
|
5d775978c6 | ||
|
|
047c236191 | ||
|
|
1536e98ba4 | ||
|
|
baee422090 | ||
|
|
07de25c90f | ||
|
|
027b10a6dd | ||
|
|
bb4308e7d8 | ||
|
|
eb31e9b2a1 | ||
|
|
7af7715f90 | ||
|
|
934e63d34a | ||
|
|
baff7b3d7c | ||
|
|
acbb3382fe | ||
|
|
4bb44f1a18 | ||
|
|
edf4c75bbd |
26
CHANGELOG.md
26
CHANGELOG.md
@@ -1,3 +1,29 @@
|
||||
<a name="3.2.3"></a>
|
||||
## [3.2.3](https://github.com/driftyco/ionic-native/compare/v3.2.2...v3.2.3) (2017-03-24)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **contacts:** fix crash if plugin is unavailable ([a9a511d](https://github.com/driftyco/ionic-native/commit/a9a511d)), closes [#1250](https://github.com/driftyco/ionic-native/issues/1250)
|
||||
* **core:** make properties enumerable ([a151295](https://github.com/driftyco/ionic-native/commit/a151295))
|
||||
|
||||
|
||||
|
||||
<a name="3.2.2"></a>
|
||||
## [3.2.2](https://github.com/driftyco/ionic-native/compare/v3.2.1...v3.2.2) (2017-03-23)
|
||||
|
||||
|
||||
|
||||
<a name="3.2.1"></a>
|
||||
## [3.2.1](https://github.com/driftyco/ionic-native/compare/v3.2.0...v3.2.1) (2017-03-23)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **secure-storage:** update the pluginRef (#1228) ([baff7b3](https://github.com/driftyco/ionic-native/commit/baff7b3))
|
||||
|
||||
|
||||
|
||||
<a name="3.2.0"></a>
|
||||
# [3.2.0](https://github.com/driftyco/ionic-native/compare/v3.1.1...v3.2.0) (2017-03-22)
|
||||
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
[](https://circleci.com/gh/driftyco/ionic-native) [](http://commitizen.github.io/cz-cli/)
|
||||
[](https://www.npmjs.com/package/ionic-native)
|
||||
[](https://circleci.com/gh/driftyco/ionic-native) [](http://commitizen.github.io/cz-cli/) 
|
||||
|
||||
[](https://nodei.co/npm/ionic-native/)
|
||||
[](https://nodei.co/npm/ionic-native/)
|
||||
|
||||
# Ionic Native
|
||||
|
||||
|
||||
41
gulpfile.js
41
gulpfile.js
@@ -1,32 +1,35 @@
|
||||
var gulp = require('gulp');
|
||||
var minimist = require('minimist');
|
||||
var rename = require("gulp-rename");
|
||||
var tslint = require('gulp-tslint');
|
||||
var decamelize = require('decamelize');
|
||||
var replace = require('gulp-replace');
|
||||
"use strict";
|
||||
|
||||
var flagConfig = {
|
||||
string: ['port', 'version', 'ngVersion', 'animations'],
|
||||
boolean: ['dry-run'],
|
||||
alias: {'p': 'port', 'v': 'version', 'a': 'ngVersion'},
|
||||
default: { port: 8000 }
|
||||
};
|
||||
var flags = minimist(process.argv.slice(2), flagConfig);
|
||||
const gulp = require('gulp'),
|
||||
minimist = require('minimist'),
|
||||
rename = require("gulp-rename"),
|
||||
tslint = require('gulp-tslint'),
|
||||
decamelize = require('decamelize'),
|
||||
replace = require('gulp-replace');
|
||||
|
||||
const flagConfig = {
|
||||
string: ['port', 'version', 'ngVersion', 'animations'],
|
||||
boolean: ['dry-run'],
|
||||
alias: {'p': 'port', 'v': 'version', 'a': 'ngVersion'},
|
||||
default: { port: 8000 }
|
||||
},
|
||||
|
||||
flags = minimist(process.argv.slice(2), flagConfig);
|
||||
|
||||
/* Docs tasks */
|
||||
require('./scripts/docs/gulp-tasks')(gulp, flags);
|
||||
|
||||
gulp.task('lint', function() {
|
||||
gulp.src('src/**/*.ts')
|
||||
gulp.task('lint', () => {
|
||||
return gulp.src('src/**/*.ts')
|
||||
.pipe(tslint({
|
||||
formatter: "verbose",
|
||||
configuration: 'tslint.json'
|
||||
}))
|
||||
.pipe(tslint.report())
|
||||
.pipe(tslint.report());
|
||||
});
|
||||
|
||||
gulp.task('plugin:create', function(){
|
||||
if(flags.n && flags.n !== ''){
|
||||
gulp.task('plugin:create', () => {
|
||||
if (flags.n && flags.n !== ''){
|
||||
|
||||
const src = flags.m?'./scripts/templates/wrap-min.tmpl':'./scripts/templates/wrap.tmpl',
|
||||
pluginName = flags.n,
|
||||
@@ -40,8 +43,6 @@ gulp.task('plugin:create', function(){
|
||||
.pipe(gulp.dest('./src/@ionic-native/plugins/' + pluginPackageName));
|
||||
|
||||
} else {
|
||||
|
||||
console.log("Usage is: gulp plugin:create -n PluginName");
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ionic-native",
|
||||
"version": "3.2.0",
|
||||
"version": "3.2.3",
|
||||
"description": "Native plugin wrappers for Cordova and Ionic with TypeScript, ES6+, Promise and Observable support",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
@@ -40,7 +40,7 @@
|
||||
"build": "npm run clean && npm run lint && npm run build:core && npm run build:modules",
|
||||
"build:core": "ngc -p scripts/build/tsconfig-core.json",
|
||||
"build:modules": "node scripts/build/build.js",
|
||||
"clean": "rimraf dist",
|
||||
"clean": "rimraf dist .tmp",
|
||||
"shipit": "npm run build && gulp readmes && npm run npmpub",
|
||||
"npmpub": "node scripts/build/publish.js",
|
||||
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0"
|
||||
|
||||
@@ -12,14 +12,13 @@ const ROOT = path.resolve(path.join(__dirname, '../../')), // root ionic-native
|
||||
PLUGIN_PACKAGE_JSON = require(path.resolve(__dirname, 'plugin-package.json')), // plugin package.json template
|
||||
PLUGIN_TS_CONFIG = require(path.resolve(__dirname, 'tsconfig-plugin.json')), // plugin tsconfig template
|
||||
BUILD_TMP = path.resolve(ROOT, '.tmp'), // tmp directory path
|
||||
BUILD_DIST_ROOT = path.resolve(ROOT, 'dist/packages-dist/@ionic-native'), // dist directory root path
|
||||
BUILD_PLUGINS_DIST = path.resolve(BUILD_DIST_ROOT, 'plugins'), // plugins dist directory path
|
||||
BUILD_DIST_ROOT = path.resolve(ROOT, 'dist/@ionic-native'), // dist directory root path
|
||||
BUILD_CORE_DIST = path.resolve(BUILD_DIST_ROOT, 'core'); // core dist directory path
|
||||
|
||||
|
||||
// dependency versions
|
||||
const ANGULAR_VERSION = '2.4.8',
|
||||
RXJS_VERSION = '5.0.1',
|
||||
const ANGULAR_VERSION = '*',
|
||||
RXJS_VERSION = '^5.0.1',
|
||||
MIN_CORE_VERSION = '^3.1.0',
|
||||
IONIC_NATIVE_VERSION = require(path.resolve(ROOT, 'package.json')).version;
|
||||
|
||||
@@ -37,13 +36,6 @@ const PLUGIN_PEER_DEPS = {
|
||||
// set peer dependencies for all plugins
|
||||
PLUGIN_PACKAGE_JSON.peerDependencies = PLUGIN_PEER_DEPS;
|
||||
|
||||
|
||||
// Delete dist directory and any temporary files
|
||||
console.log('Removing old TMP directory');
|
||||
fs.removeSync(BUILD_TMP);
|
||||
fs.removeSync(BUILD_PLUGINS_DIST);
|
||||
|
||||
|
||||
// Create tmp/dist directories
|
||||
console.log('Making new TMP directory');
|
||||
fs.mkdirpSync(BUILD_TMP);
|
||||
@@ -79,7 +71,7 @@ const addPluginToQueue = pluginName => {
|
||||
let tsConfigPath;
|
||||
|
||||
fs.mkdirpAsync(PLUGIN_BUILD_DIR) // create tmp build dir
|
||||
.then(() => fs.mkdirpAsync(path.resolve(BUILD_PLUGINS_DIST, pluginName))) // create dist dir
|
||||
.then(() => fs.mkdirpAsync(path.resolve(BUILD_DIST_ROOT, pluginName))) // create dist dir
|
||||
.then(() => {
|
||||
|
||||
// Write tsconfig.json
|
||||
@@ -98,7 +90,7 @@ const addPluginToQueue = pluginName => {
|
||||
packageJson.name = `@ionic-native/${pluginName}`;
|
||||
packageJson.version = IONIC_NATIVE_VERSION;
|
||||
|
||||
return fs.writeJsonAsync(path.resolve(BUILD_PLUGINS_DIST, pluginName, 'package.json'), packageJson);
|
||||
return fs.writeJsonAsync(path.resolve(BUILD_DIST_ROOT, pluginName, 'package.json'), packageJson);
|
||||
})
|
||||
.then(() => {
|
||||
|
||||
|
||||
@@ -7,51 +7,38 @@ const fs = require('fs-extra-promise').useFs(require('fs-extra')),
|
||||
|
||||
|
||||
const ROOT = path.resolve(path.join(__dirname, '../../')),
|
||||
DIST = path.resolve(ROOT, 'dist', 'packages-dist', '@ionic-native'),
|
||||
PLUGINS_ROOT = path.resolve(DIST, 'plugins'),
|
||||
CORE = path.resolve(DIST, 'core');
|
||||
DIST = path.resolve(ROOT, 'dist', '@ionic-native');
|
||||
|
||||
const FLAGS = '--access public'; // add any flags here if you want... (example: --tag alpha)
|
||||
|
||||
console.log('Publishing @ionic-native/core');
|
||||
exec(`npm publish ${CORE} ${FLAGS}`)
|
||||
.then(() => {
|
||||
const PACKAGES = fs.readdirSync(DIST);
|
||||
|
||||
const PLUGINS = fs.readdirSync(PLUGINS_ROOT);
|
||||
|
||||
const QUEUE = queue({
|
||||
concurrency: 10
|
||||
});
|
||||
const QUEUE = queue({
|
||||
concurrency: 10
|
||||
});
|
||||
|
||||
PLUGINS.forEach(pluginName => {
|
||||
PACKAGES.forEach(packageName => {
|
||||
|
||||
QUEUE.push(done => {
|
||||
QUEUE.push(done => {
|
||||
|
||||
console.log(`Publishing plugin ${pluginName}`);
|
||||
const pluginPath = path.resolve(PLUGINS_ROOT, pluginName);
|
||||
|
||||
exec(`npm publish ${pluginPath} ${FLAGS}`)
|
||||
.then(() => done())
|
||||
.catch(done);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
QUEUE.start((err) => {
|
||||
|
||||
if (err) {
|
||||
console.log('Error publishing ionic-native. ', err);
|
||||
} else {
|
||||
console.log('Done publishing ionic-native!');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})
|
||||
.catch(e => {
|
||||
|
||||
console.log('Publish failed');
|
||||
console.log(e);
|
||||
console.log(`Publishing @ionic-native/${packageName}`);
|
||||
const packagePath = path.resolve(DIST, packageName);
|
||||
exec(`npm publish ${packagePath} ${FLAGS}`)
|
||||
.then(() => done())
|
||||
.catch(done);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
QUEUE.start((err) => {
|
||||
|
||||
if (err) {
|
||||
console.log('Error publishing ionic-native. ', err);
|
||||
} else {
|
||||
console.log('Done publishing ionic-native!');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"emitDecoratorMetadata": true,
|
||||
"module": "es2015",
|
||||
"moduleResolution": "node",
|
||||
"outDir": "../../dist/packages-dist/",
|
||||
"outDir": "../../dist/",
|
||||
"rootDir": "../../src/",
|
||||
"target": "es5",
|
||||
"skipLibCheck": true,
|
||||
|
||||
@@ -7,16 +7,14 @@
|
||||
"emitDecoratorMetadata": true,
|
||||
"module": "es2015",
|
||||
"moduleResolution": "node",
|
||||
"outDir": "../../../dist/packages-dist/",
|
||||
"outDir": "../../../dist/@ionic-native/",
|
||||
"paths": {
|
||||
"@ionic-native/core": ["../../../dist/packages-dist/@ionic-native/core"]
|
||||
"@ionic-native/core": ["../../../dist/@ionic-native/core"]
|
||||
},
|
||||
"rootDir": "../../../src/",
|
||||
"rootDir": "../../../src/@ionic-native/plugins/",
|
||||
"target": "es5",
|
||||
"skipLibCheck": true,
|
||||
"lib": ["es2015", "dom"]
|
||||
},
|
||||
"files": [
|
||||
"../../../src/@ionic-native/plugins/{{PLUGIN}}/index.ts"
|
||||
]
|
||||
"files": []
|
||||
}
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
"sitePath": "../ionic-site",
|
||||
"v2DocsDir": "docs/v2/native",
|
||||
"docsDest": "../ionic-site/content/docs/v2/native",
|
||||
"pluginDir": "dist/packages-dist/@ionic-native/plugins"
|
||||
"pluginDir": "dist/@ionic-native"
|
||||
}
|
||||
|
||||
3
scripts/docs/configs/links.js
Normal file
3
scripts/docs/configs/links.js
Normal file
@@ -0,0 +1,3 @@
|
||||
module.exports = function(getLinkInfo) {
|
||||
getLinkInfo.useFirstAmbiguousLink = false;
|
||||
};
|
||||
3
scripts/docs/configs/log.js
Normal file
3
scripts/docs/configs/log.js
Normal file
@@ -0,0 +1,3 @@
|
||||
module.exports = function(log) {
|
||||
log.level = 'error'; //'silly', 'debug', 'info', 'warn', 'error'
|
||||
};
|
||||
4
scripts/docs/configs/tag-defs.js
Normal file
4
scripts/docs/configs/tag-defs.js
Normal file
@@ -0,0 +1,4 @@
|
||||
module.exports = function(parseTagsProcessor) {
|
||||
parseTagsProcessor.tagDefinitions = parseTagsProcessor.tagDefinitions
|
||||
.concat(require('../tag-defs/tag-defs'));
|
||||
};
|
||||
12
scripts/docs/configs/template-filters.js
Normal file
12
scripts/docs/configs/template-filters.js
Normal file
@@ -0,0 +1,12 @@
|
||||
module.exports = function(templateEngine) {
|
||||
// Nunjucks and Angular conflict in their template bindings so change the Nunjucks
|
||||
// Also conflict with Jekyll
|
||||
templateEngine.config.tags = {
|
||||
variableStart: '<$',
|
||||
variableEnd: '$>',
|
||||
blockStart: '<@',
|
||||
blockEnd: '@>',
|
||||
commentStart: '<#',
|
||||
commentEnd: '#>'
|
||||
};
|
||||
};
|
||||
9
scripts/docs/configs/template-tags.js
Normal file
9
scripts/docs/configs/template-tags.js
Normal file
@@ -0,0 +1,9 @@
|
||||
module.exports = function(templateEngine) {
|
||||
// add custom filters to nunjucks
|
||||
templateEngine.filters.push(
|
||||
require('../filters/capital'),
|
||||
require('../filters/code'),
|
||||
require('../filters/dump'),
|
||||
require('../filters/dashify')
|
||||
);
|
||||
};
|
||||
@@ -1,182 +1,79 @@
|
||||
var Package = require('dgeni').Package;
|
||||
var jsdocPackage = require('dgeni-packages/jsdoc');
|
||||
var nunjucksPackage = require('dgeni-packages/nunjucks');
|
||||
var typescriptPackage = require('dgeni-packages/typescript');
|
||||
var linksPackage = require('dgeni-packages/links');
|
||||
var path = require('path');
|
||||
var semver = require('semver');
|
||||
var fs = require('fs');
|
||||
var _ = require('lodash');
|
||||
var config = require('../config.json');
|
||||
var projectPackage = require('../../package.json');
|
||||
"use strict";
|
||||
const Package = require('dgeni').Package,
|
||||
jsdocPackage = require('dgeni-packages/jsdoc'),
|
||||
nunjucksPackage = require('dgeni-packages/nunjucks'),
|
||||
typescriptPackage = require('dgeni-packages/typescript'),
|
||||
linksPackage = require('dgeni-packages/links'),
|
||||
path = require('path'),
|
||||
config = require('../config.json');
|
||||
|
||||
// Define the dgeni package for generating the docs
|
||||
module.exports = function(currentVersion) {
|
||||
module.exports = currentVersion => {
|
||||
|
||||
return new Package('ionic-v2-docs', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage])
|
||||
return new Package('ionic-native-docs', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage])
|
||||
|
||||
// .processor(require('./processors/latest-version'))
|
||||
.processor(require('./processors/jekyll'))
|
||||
.processor(require('./processors/remove-private-members'))
|
||||
.processor(require('./processors/hide-private-api'))
|
||||
.processor(require('./processors/collect-inputs-outputs'))
|
||||
.processor(require('./processors/npm-id'))
|
||||
.processor(require('./processors/remove-private-members'))
|
||||
.processor(require('./processors/hide-private-api'))
|
||||
.processor(require('./processors/parse-optional'))
|
||||
.processor(require('./processors/mark-properties'))
|
||||
.processor(require('./processors/npm-id'))
|
||||
.processor(require('./processors/jekyll'))
|
||||
|
||||
// for debugging docs
|
||||
// .processor(function test(){
|
||||
// return {
|
||||
//
|
||||
// $runBefore: ['rendering-docs'],
|
||||
// $process: function(docs){
|
||||
// docs.forEach(function(doc){
|
||||
// if (doc.name == "Camera"){
|
||||
//
|
||||
// // console.log(doc.tags);
|
||||
// // doc.tags.forEach(function(tag){
|
||||
// // if(tag.tagName == 'classes'){
|
||||
// //
|
||||
// // }
|
||||
// // });
|
||||
//
|
||||
// // doc.moduleDoc.exports.forEach(function(d,i){
|
||||
// // if(d.name === 'CameraOptions') {
|
||||
// // console.log('Name: ' + d.name);
|
||||
// // console.log('Type: ' + d.docType);
|
||||
// // console.log('First member: ', d.members[0]);
|
||||
// // }
|
||||
// // });
|
||||
//
|
||||
//
|
||||
// // var exports = doc.exportSymbol.parent.exports;
|
||||
// // for(var p in exports) {
|
||||
// // if(p == 'CameraOptions')
|
||||
// // {
|
||||
// // var x = exports[p];
|
||||
// // console.log(x.members.quality);
|
||||
// // }
|
||||
// // }
|
||||
// // doc.members.forEach(function(method){
|
||||
// // if (method.name === "getPicture") {
|
||||
// // console.log(method);
|
||||
// // }
|
||||
// // })
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
.config(require('./configs/log'))
|
||||
.config(require('./configs/template-filters'))
|
||||
.config(require('./configs/template-tags'))
|
||||
.config(require('./configs/tag-defs'))
|
||||
.config(require('./configs/links'))
|
||||
|
||||
.config(function(log) {
|
||||
log.level = 'error'; //'silly', 'debug', 'info', 'warn', 'error'
|
||||
})
|
||||
.config(function(renderDocsProcessor, computePathsProcessor) {
|
||||
|
||||
.config(function(renderDocsProcessor, computePathsProcessor) {
|
||||
currentVersion = {
|
||||
href: '/' + config.v2DocsDir.replace('content/', ''),
|
||||
folder: '',
|
||||
name: currentVersion
|
||||
};
|
||||
|
||||
versions = [];
|
||||
// new version, add it to the versions list
|
||||
if (currentVersion != 'nightly' && !_.includes(versions, currentVersion)) {
|
||||
versions.unshift(currentVersion);
|
||||
}
|
||||
//First semver valid version is latest
|
||||
var latestVersion = _.find(versions, semver.valid);
|
||||
versions = versions.map(function(version) {
|
||||
// We don't separate by versions so always put the docs in the root
|
||||
var folder = '';
|
||||
return {
|
||||
href: '/' + config.v2DocsDir.replace('content/',''),
|
||||
folder: folder,
|
||||
name: version
|
||||
};
|
||||
});
|
||||
renderDocsProcessor.extraData.version = {
|
||||
list: [currentVersion],
|
||||
current: currentVersion,
|
||||
latest: currentVersion
|
||||
};
|
||||
|
||||
var versionData = {
|
||||
list: versions,
|
||||
current: _.find(versions, {name: currentVersion}),
|
||||
latest: _.find(versions, {name: latestVersion}) || _.first(versions)
|
||||
};
|
||||
computePathsProcessor.pathTemplates = [{
|
||||
docTypes: ['class'],
|
||||
getOutputPath: doc => 'content/' + config.v2DocsDir + '/' + doc.name + '/index.md'
|
||||
}];
|
||||
|
||||
renderDocsProcessor.extraData.version = versionData;
|
||||
computePathsProcessor.pathTemplates = [{
|
||||
docTypes: ['class', 'var', 'function', 'let'],
|
||||
getOutputPath: function(doc) {
|
||||
var docPath = doc.name + '/index.md';
|
||||
var path = 'content/' + config.v2DocsDir + '/' + docPath;
|
||||
})
|
||||
|
||||
return path;
|
||||
}
|
||||
}];
|
||||
})
|
||||
//configure file reading
|
||||
.config(function(readFilesProcessor, readTypeScriptModules) {
|
||||
|
||||
//configure file reading
|
||||
.config(function(readFilesProcessor, readTypeScriptModules) {
|
||||
// Don't run unwanted processors since we are not using the normal file reading processor
|
||||
readFilesProcessor.$enabled = false;
|
||||
readFilesProcessor.basePath = path.resolve(__dirname, '../..');
|
||||
|
||||
// Don't run unwanted processors since we are not using the normal file reading processor
|
||||
readFilesProcessor.$enabled = false;
|
||||
readFilesProcessor.basePath = path.resolve(__dirname, '../..');
|
||||
readTypeScriptModules.basePath = path.resolve(__dirname, '../..');
|
||||
readTypeScriptModules.sourceFiles = [
|
||||
'./src/@ionic-native/plugins/**/*.ts'
|
||||
];
|
||||
})
|
||||
|
||||
readTypeScriptModules.basePath = path.resolve(__dirname, '../..');
|
||||
readTypeScriptModules.sourceFiles = [
|
||||
'./src/@ionic-native/plugins/**/*.ts'
|
||||
];
|
||||
})
|
||||
// Configure file writing
|
||||
.config(function(writeFilesProcessor) {
|
||||
writeFilesProcessor.outputFolder = '../ionic-site/';
|
||||
})
|
||||
|
||||
.config(function(parseTagsProcessor) {
|
||||
parseTagsProcessor.tagDefinitions = parseTagsProcessor.tagDefinitions
|
||||
.concat(require('./tag-defs/tag-defs'));
|
||||
})
|
||||
// Configure rendering
|
||||
.config(function(templateFinder) {
|
||||
|
||||
// .config(function(parseTagsProcessor) {
|
||||
// // We actually don't want to parse param docs in this package as we are
|
||||
// // getting the data out using TS
|
||||
// parseTagsProcessor.tagDefinitions.forEach(function(tagDef) {
|
||||
// console.log(tagDef);
|
||||
// if (tagDef.name === 'param') {
|
||||
// tagDef.docProperty = 'paramData';
|
||||
// tagDef.transforms = [];
|
||||
// }
|
||||
// });
|
||||
// })
|
||||
templateFinder.templateFolders.unshift(path.resolve(__dirname, 'templates'));
|
||||
|
||||
// Configure links
|
||||
.config(function(getLinkInfo) {
|
||||
getLinkInfo.useFirstAmbiguousLink = false;
|
||||
})
|
||||
|
||||
// Configure file writing
|
||||
.config(function(writeFilesProcessor) {
|
||||
writeFilesProcessor.outputFolder = '../ionic-site/';
|
||||
})
|
||||
|
||||
// Configure rendering
|
||||
.config(function(templateFinder, templateEngine) {
|
||||
|
||||
// Nunjucks and Angular conflict in their template bindings so change the Nunjucks
|
||||
// Also conflict with Jekyll
|
||||
templateEngine.config.tags = {
|
||||
variableStart: '<$',
|
||||
variableEnd: '$>',
|
||||
blockStart: '<@',
|
||||
blockEnd: '@>',
|
||||
commentStart: '<#',
|
||||
commentEnd: '#>'
|
||||
};
|
||||
|
||||
// add custom filters to nunjucks
|
||||
templateEngine.filters.push(
|
||||
require('./filters/capital'),
|
||||
require('./filters/code'),
|
||||
require('./filters/dump'),
|
||||
require('./filters/dashify')
|
||||
);
|
||||
|
||||
templateFinder.templateFolders.unshift(path.resolve(__dirname, 'templates'));
|
||||
|
||||
// Specify how to match docs to templates.
|
||||
templateFinder.templatePatterns = [
|
||||
'${ doc.template }',
|
||||
'${ doc.docType }.template.html',
|
||||
'common.template.html'
|
||||
];
|
||||
});
|
||||
// Specify how to match docs to templates.
|
||||
templateFinder.templatePatterns = [
|
||||
'${ doc.template }',
|
||||
'${ doc.docType }.template.html',
|
||||
'common.template.html'
|
||||
];
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
@@ -1,178 +1,76 @@
|
||||
var Package = require('dgeni').Package;
|
||||
var jsdocPackage = require('dgeni-packages/jsdoc');
|
||||
var nunjucksPackage = require('dgeni-packages/nunjucks');
|
||||
var typescriptPackage = require('dgeni-packages/typescript');
|
||||
var linksPackage = require('dgeni-packages/links');
|
||||
var path = require('path');
|
||||
var semver = require('semver');
|
||||
var fs = require('fs');
|
||||
var _ = require('lodash');
|
||||
var config = require('../config.json');
|
||||
var projectPackage = require('../../package.json');
|
||||
"use strict";
|
||||
const Package = require('dgeni').Package,
|
||||
jsdocPackage = require('dgeni-packages/jsdoc'),
|
||||
nunjucksPackage = require('dgeni-packages/nunjucks'),
|
||||
typescriptPackage = require('dgeni-packages/typescript'),
|
||||
linksPackage = require('dgeni-packages/links'),
|
||||
path = require('path'),
|
||||
config = require('../config.json');
|
||||
|
||||
// jscs:disable validateIndentation
|
||||
module.exports = currentVersion => {
|
||||
|
||||
// Define the dgeni package for generating the docs
|
||||
module.exports = function(currentVersion) {
|
||||
return new Package('ionic-native-readmes', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage])
|
||||
|
||||
return new Package('ionic-v2-docs', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage])
|
||||
.processor(require('./processors/readmes'))
|
||||
.processor(require('./processors/remove-private-members'))
|
||||
.processor(require('./processors/hide-private-api'))
|
||||
.processor(require('./processors/npm-id'))
|
||||
|
||||
// .processor(require('./processors/latest-version'))
|
||||
.processor(require('./processors/readmes'))
|
||||
.processor(require('./processors/npm-id'))
|
||||
.processor(require('./processors/remove-private-members'))
|
||||
.processor(require('./processors/hide-private-api'))
|
||||
// .processor(require('./processors/collect-inputs-outputs'))
|
||||
.config(require('./configs/log'))
|
||||
.config(require('./configs/template-filters'))
|
||||
.config(require('./configs/template-tags'))
|
||||
.config(require('./configs/tag-defs'))
|
||||
.config(require('./configs/links'))
|
||||
|
||||
// for debugging docs
|
||||
// .processor(function test(){
|
||||
// return {
|
||||
//
|
||||
// $runBefore: ['rendering-docs'],
|
||||
// $process: function(docs){
|
||||
// docs.forEach(function(doc){
|
||||
// if (doc.name == "Camera"){
|
||||
//
|
||||
// // console.log(doc.tags);
|
||||
// // doc.tags.forEach(function(tag){
|
||||
// // if(tag.tagName == 'classes'){
|
||||
// //
|
||||
// // }
|
||||
// // });
|
||||
//
|
||||
// // doc.moduleDoc.exports.forEach(function(d,i){
|
||||
// // if(d.name === 'CameraOptions') {
|
||||
// // console.log('Name: ' + d.name);
|
||||
// // console.log('Type: ' + d.docType);
|
||||
// // console.log('First member: ', d.members[0]);
|
||||
// // }
|
||||
// // });
|
||||
//
|
||||
//
|
||||
// // var exports = doc.exportSymbol.parent.exports;
|
||||
// // for(var p in exports) {
|
||||
// // if(p == 'CameraOptions')
|
||||
// // {
|
||||
// // var x = exports[p];
|
||||
// // console.log(x.members.quality);
|
||||
// // }
|
||||
// // }
|
||||
// // doc.members.forEach(function(method){
|
||||
// // if (method.name === "getPicture") {
|
||||
// // console.log(method);
|
||||
// // }
|
||||
// // })
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
.config(function(log) {
|
||||
log.level = 'error'; //'silly', 'debug', 'info', 'warn', 'error'
|
||||
})
|
||||
|
||||
.config(function(renderDocsProcessor, computePathsProcessor) {
|
||||
.config(function(renderDocsProcessor, computePathsProcessor) {
|
||||
|
||||
versions = [];
|
||||
// new version, add it to the versions list
|
||||
if (currentVersion != 'nightly' && !_.includes(versions, currentVersion)) {
|
||||
versions.unshift(currentVersion);
|
||||
}
|
||||
//First semver valid version is latest
|
||||
var latestVersion = _.find(versions, semver.valid);
|
||||
versions = versions.map(function(version) {
|
||||
// We don't separate by versions so always put the docs in the root
|
||||
var folder = '';
|
||||
return {
|
||||
href: '/' + config.v2DocsDir.replace('content/', ''),
|
||||
folder: folder,
|
||||
name: version
|
||||
};
|
||||
});
|
||||
currentVersion = {
|
||||
href: '/' + config.v2DocsDir.replace('content/', ''),
|
||||
folder: '',
|
||||
name: currentVersion
|
||||
};
|
||||
|
||||
var versionData = {
|
||||
list: versions,
|
||||
current: _.find(versions, {name: currentVersion}),
|
||||
latest: _.find(versions, {name: latestVersion}) || _.first(versions)
|
||||
};
|
||||
renderDocsProcessor.extraData.version = {
|
||||
list: [currentVersion],
|
||||
current: currentVersion,
|
||||
latest: currentVersion
|
||||
};
|
||||
|
||||
renderDocsProcessor.extraData.version = versionData;
|
||||
computePathsProcessor.pathTemplates = [{
|
||||
docTypes: ['class'],
|
||||
getOutputPath: function(doc) {
|
||||
return doc.originalModule.replace(config.pluginDir + '/', '')
|
||||
.replace('/index', '') + '/README.md';
|
||||
}
|
||||
}];
|
||||
})
|
||||
computePathsProcessor.pathTemplates = [{
|
||||
docTypes: ['class'],
|
||||
getOutputPath: doc => doc.originalModule.replace(config.pluginDir + '/', '')
|
||||
.replace('/plugins', '')
|
||||
.replace('/index', '/README.md')
|
||||
}];
|
||||
|
||||
//configure file reading
|
||||
.config(function(readFilesProcessor, readTypeScriptModules) {
|
||||
})
|
||||
|
||||
// Don't run unwanted processors since we are not using the normal file reading processor
|
||||
readFilesProcessor.$enabled = false;
|
||||
readFilesProcessor.basePath = path.resolve(__dirname, '../..');
|
||||
//configure file reading
|
||||
.config(function(readFilesProcessor, readTypeScriptModules) {
|
||||
// Don't run unwanted processors since we are not using the normal file reading processor
|
||||
readFilesProcessor.$enabled = false;
|
||||
readFilesProcessor.basePath = path.resolve(__dirname, '../..');
|
||||
|
||||
readTypeScriptModules.basePath = path.resolve(path.resolve(__dirname, '../..'));
|
||||
readTypeScriptModules.sourceFiles = ['./src/@ionic-native/plugins/**/*.ts'];
|
||||
})
|
||||
readTypeScriptModules.basePath = path.resolve(path.resolve(__dirname, '../..'));
|
||||
readTypeScriptModules.sourceFiles = ['./src/@ionic-native/plugins/**/*.ts'];
|
||||
})
|
||||
|
||||
.config(function(parseTagsProcessor) {
|
||||
parseTagsProcessor.tagDefinitions = parseTagsProcessor.tagDefinitions
|
||||
.concat(require('./tag-defs/tag-defs'));
|
||||
})
|
||||
// Configure file writing
|
||||
.config(function(writeFilesProcessor) {
|
||||
writeFilesProcessor.outputFolder = './dist/';
|
||||
})
|
||||
|
||||
// .config(function(parseTagsProcessor) {
|
||||
// // We actually don't want to parse param docs in this package as we are
|
||||
// // getting the data out using TS
|
||||
// parseTagsProcessor.tagDefinitions.forEach(function(tagDef) {
|
||||
// console.log(tagDef);
|
||||
// if (tagDef.name === 'param') {
|
||||
// tagDef.docProperty = 'paramData';
|
||||
// tagDef.transforms = [];
|
||||
// }
|
||||
// });
|
||||
// })
|
||||
// Configure rendering
|
||||
.config(function(templateFinder) {
|
||||
templateFinder.templateFolders.unshift(path.resolve(__dirname, 'templates'));
|
||||
|
||||
// Configure links
|
||||
.config(function(getLinkInfo) {
|
||||
getLinkInfo.useFirstAmbiguousLink = false;
|
||||
})
|
||||
|
||||
// Configure file writing
|
||||
.config(function(writeFilesProcessor) {
|
||||
writeFilesProcessor.outputFolder = './dist/packages-dist/';
|
||||
})
|
||||
|
||||
// Configure rendering
|
||||
.config(function(templateFinder, templateEngine) {
|
||||
|
||||
// Nunjucks and Angular conflict in their template bindings so change the Nunjucks
|
||||
// Also conflict with Jekyll
|
||||
templateEngine.config.tags = {
|
||||
variableStart: '<$',
|
||||
variableEnd: '$>',
|
||||
blockStart: '<@',
|
||||
blockEnd: '@>',
|
||||
commentStart: '<#',
|
||||
commentEnd: '#>'
|
||||
};
|
||||
|
||||
// add custom filters to nunjucks
|
||||
templateEngine.filters.push(
|
||||
require('./filters/capital'),
|
||||
require('./filters/code'),
|
||||
require('./filters/dump')
|
||||
);
|
||||
|
||||
templateFinder.templateFolders.unshift(path.resolve(__dirname, 'templates'));
|
||||
|
||||
// Specify how to match docs to templates.
|
||||
templateFinder.templatePatterns = [
|
||||
'${ doc.template }',
|
||||
'${ doc.docType }.template.md',
|
||||
'readme.template.md'
|
||||
];
|
||||
});
|
||||
// Specify how to match docs to templates.
|
||||
templateFinder.templatePatterns = [
|
||||
'${ doc.template }',
|
||||
'${ doc.docType }.template.md',
|
||||
'readme.template.md'
|
||||
];
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
"use strict";
|
||||
module.exports = {
|
||||
name: 'capital',
|
||||
process: function(str) {
|
||||
str || (str = '');
|
||||
return str.charAt(0).toUpperCase() + str.substring(1);
|
||||
}
|
||||
process: str => str? str.charAt(0).toUpperCase() + str.substring(1) : ''
|
||||
};
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
var encoder = new require('node-html-encoder').Encoder();
|
||||
"use strict";
|
||||
const encoder = new require('node-html-encoder').Encoder();
|
||||
|
||||
function code(str, inline, lang) {
|
||||
// Encode any HTML entities in the code string
|
||||
@@ -10,16 +11,14 @@ function code(str, inline, lang) {
|
||||
str = '<code' + lang + '>' + str + '</code>';
|
||||
|
||||
// If not inline then wrap the code element in a pre element
|
||||
if ( !inline ) {
|
||||
if (!inline) {
|
||||
str = '<pre>' + str + '</pre>';
|
||||
}
|
||||
|
||||
return str;
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
name: 'code',
|
||||
process: function(str, lang) {
|
||||
return code(str, true, lang);
|
||||
}
|
||||
process: (str, lang) => code(str, true, lang)
|
||||
};
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
"use strict";
|
||||
module.exports = {
|
||||
name: 'dashify',
|
||||
process: function(str) {
|
||||
str || (str = '');
|
||||
return str.replace(/\s/g, '-');
|
||||
}
|
||||
process: str => str? str.replace(/\s/g, '-') : ''
|
||||
};
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
"use strict";
|
||||
module.exports = {
|
||||
name: 'dump',
|
||||
process: function(obj) {
|
||||
console.log(obj);
|
||||
}
|
||||
};
|
||||
process: obj => console.log(obj)
|
||||
};
|
||||
|
||||
@@ -1,31 +1,39 @@
|
||||
var config = require('../config.json');
|
||||
var projectPackage = require('../../package.json');
|
||||
module.exports = function(gulp) {
|
||||
gulp.task('docs', [], function() {
|
||||
var Dgeni = require('dgeni');
|
||||
var semver = require('semver');
|
||||
"use strict";
|
||||
const config = require('../config.json'),
|
||||
projectPackage = require('../../package.json'),
|
||||
path = require('path'),
|
||||
fs = require('fs-extra-promise').useFs(require('fs-extra')),
|
||||
Dgeni = require('dgeni');
|
||||
|
||||
module.exports = gulp => {
|
||||
gulp.task('docs', [], () => {
|
||||
|
||||
try {
|
||||
var ionicPackage = require('./dgeni-config')(projectPackage.version);
|
||||
var dgeni = new Dgeni([ionicPackage]);
|
||||
return dgeni.generate().then(function(docs) {
|
||||
console.log(docs.length + ' docs generated');
|
||||
});
|
||||
|
||||
const ionicPackage = require('./dgeni-config')(projectPackage.version),
|
||||
dgeni = new Dgeni([ionicPackage]);
|
||||
|
||||
return dgeni.generate().then(docs => console.log(docs.length + ' docs generated'));
|
||||
|
||||
} catch (err) {
|
||||
console.log(err.stack);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
gulp.task('readmes', [], function() {
|
||||
var Dgeni = require('dgeni');
|
||||
var semver = require('semver');
|
||||
|
||||
fs.copySync(path.resolve(__dirname, '..', '..', 'README.md'), path.resolve(__dirname, '..', '..', config.pluginDir, 'core', 'README.md'));
|
||||
|
||||
try {
|
||||
var ionicPackage = require('./dgeni-readmes-config')(projectPackage.version);
|
||||
var dgeni = new Dgeni([ionicPackage]);
|
||||
return dgeni.generate().then(function(docs) {
|
||||
console.log(docs.length + ' README files generated');
|
||||
});
|
||||
|
||||
const ionicPackage = require('./dgeni-readmes-config')(projectPackage.version),
|
||||
dgeni = new Dgeni([ionicPackage]);
|
||||
return dgeni.generate().then(docs => console.log(docs.length + ' README files generated'));
|
||||
|
||||
} catch (err) {
|
||||
console.log(err.stack);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
module.exports = function collectInputsOutputs() {
|
||||
return {
|
||||
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process: function(docs) {
|
||||
docs.forEach(function(doc) {
|
||||
|
||||
if (doc.statics && doc.statics.length) {
|
||||
for (var i in doc.statics) {
|
||||
// identify properties to differentiate from methods
|
||||
if (typeof doc.statics[i].parameters == 'undefined') {
|
||||
doc.statics[i].isProperty = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (doc.members && doc.members.length) {
|
||||
var members = [];
|
||||
var inputs = [];
|
||||
var outputs = [];
|
||||
|
||||
memberLoop:
|
||||
for (var i in doc.members) {
|
||||
|
||||
// identify properties to differentiate from methods
|
||||
if (typeof doc.members[i].parameters == 'undefined') {
|
||||
doc.members[i].isProperty = true;
|
||||
}
|
||||
|
||||
if (doc.members[i].decorators && doc.members[i].decorators.length) {
|
||||
|
||||
decoratorLoop:
|
||||
for (var ii in doc.members[i].decorators) {
|
||||
|
||||
if (doc.members[i].decorators[ii].name == 'Input') {
|
||||
inputs.push(parseMember(doc.members[i]));
|
||||
continue memberLoop;
|
||||
}
|
||||
if (doc.members[i].decorators[ii].name == 'Output') {
|
||||
outputs.push(parseMember(doc.members[i]));
|
||||
continue memberLoop;
|
||||
}
|
||||
}
|
||||
// not an input or output, must be a plain member
|
||||
members.push(doc.members[i]);
|
||||
} else {
|
||||
members.push(doc.members[i]);
|
||||
};
|
||||
}
|
||||
|
||||
// update doc with pruned members list and add inputs and outputs
|
||||
doc.members = members;
|
||||
doc.inputs = inputs;
|
||||
doc.outputs = outputs;
|
||||
}
|
||||
|
||||
function parseMember(member) {
|
||||
member.type = member.content.substring(
|
||||
member.content.indexOf('{') + 1,
|
||||
member.content.indexOf('}')
|
||||
);
|
||||
member.description = member.content.substring(
|
||||
member.content.indexOf('}') + 1,
|
||||
member.content.length
|
||||
);
|
||||
return member;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
43
scripts/docs/processors/debug.js
Normal file
43
scripts/docs/processors/debug.js
Normal file
@@ -0,0 +1,43 @@
|
||||
"use strict";
|
||||
module.exports = function test(){
|
||||
return {
|
||||
name: 'debug',
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process: function(docs){
|
||||
docs.forEach(function(doc){
|
||||
if (doc.name == "Camera"){
|
||||
|
||||
console.log(doc.tags);
|
||||
doc.tags.forEach(function(tag){
|
||||
if(tag.tagName == 'classes'){
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
doc.moduleDoc.exports.forEach(function(d,i){
|
||||
if(d.name === 'CameraOptions') {
|
||||
console.log('Name: ' + d.name);
|
||||
console.log('Type: ' + d.docType);
|
||||
console.log('First member: ', d.members[0]);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var exports = doc.exportSymbol.parent.exports;
|
||||
for(var p in exports) {
|
||||
if(p == 'CameraOptions')
|
||||
{
|
||||
var x = exports[p];
|
||||
console.log(x.members.quality);
|
||||
}
|
||||
}
|
||||
doc.members.forEach(function(method){
|
||||
if (method.name === "getPicture") {
|
||||
console.log(method);
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,9 @@
|
||||
"use strict";
|
||||
module.exports = function removePrivateApi() {
|
||||
return {
|
||||
name: 'remove-private-api',
|
||||
description: 'Prevent the private apis from being rendered',
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process: function(docs) {
|
||||
var publicDocs = [];
|
||||
docs.forEach(function(doc){
|
||||
if (!doc.private && (!doc.tags || !doc.tags.tagsByName.get('hidden'))){
|
||||
publicDocs.push(doc);
|
||||
return doc
|
||||
}
|
||||
});
|
||||
docs = publicDocs;
|
||||
return docs;
|
||||
}
|
||||
}
|
||||
$process: docs => docs.filter(doc => !doc.private && (!doc.tags || !doc.tags.tagsByName.get('hidden')))
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,38 +1,37 @@
|
||||
"use strict";
|
||||
module.exports = function jekyll(renderDocsProcessor) {
|
||||
return {
|
||||
name: 'jekyll',
|
||||
description: 'Create jekyll includes',
|
||||
$runAfter: ['paths-computed'],
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process: function(docs) {
|
||||
var currentVersion = renderDocsProcessor.extraData.version.current.name;
|
||||
$process: docs => {
|
||||
|
||||
// pretty up and sort the docs object for menu generation
|
||||
docs = docs.filter(function(doc) {
|
||||
return (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page';
|
||||
});
|
||||
docs.sort(function(a, b) {
|
||||
textA = a.name ? a.name.toUpperCase() : '';
|
||||
textB = b.name ? b.name.toUpperCase() : '';
|
||||
docs = docs.filter(doc => (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page');
|
||||
|
||||
docs.sort((a, b) => {
|
||||
const textA = a.name ? a.name.toUpperCase() : '',
|
||||
textB = b.name ? b.name.toUpperCase() : '';
|
||||
|
||||
return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
|
||||
});
|
||||
docs.forEach(function(doc, i) {
|
||||
doc.outputPath = doc.outputPath.toLowerCase().replace(/\s/g, '-');
|
||||
docs[i].URL = doc.outputPath.replace('docs/v2//', 'docs/v2/')
|
||||
.replace('/index.md', '')
|
||||
.replace('content/', '');
|
||||
|
||||
docs[i].demo = !!docs[i].demo;
|
||||
docs.forEach(doc => {
|
||||
doc.outputPath = doc.outputPath.toLowerCase().replace(/\s/g, '-');
|
||||
doc.URL = doc.outputPath.replace('docs/v2//', 'docs/v2/')
|
||||
.replace('/index.md', '')
|
||||
.replace('content/', '');
|
||||
});
|
||||
|
||||
// add side menu
|
||||
docs.push({
|
||||
docType: 'native_menu-menu',
|
||||
id: 'native_menu-menu',
|
||||
docType: 'nativeMenu',
|
||||
id: 'native_menu',
|
||||
template: 'native_menu.template.html',
|
||||
outputPath: 'content/_includes/v2_fluid/native_menu.html'
|
||||
});
|
||||
|
||||
// returning docs will replace docs object in the next process
|
||||
return docs;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
var copy = require('cpr').cpr;
|
||||
var mkdirp = require('mkdirp');
|
||||
var path = require('canonical-path');
|
||||
var q = require('q');
|
||||
var fs = require('fs');
|
||||
|
||||
module.exports = function latestVersion(renderDocsProcessor) {
|
||||
return {
|
||||
name: 'latest-version',
|
||||
$runAfter: ['files-written'],
|
||||
description: 'Copy the latest version (that was compiled to docs/) into docs/versionName',
|
||||
$process: function(docs) {
|
||||
var versionData = renderDocsProcessor.extraData.version;
|
||||
|
||||
var docsBase = 'dist/ionic-site/content/docs/v2/';
|
||||
var versionDir = path.resolve(docsBase, versionData.latest.name);
|
||||
var latestDir = path.resolve(docsBase, 'api');
|
||||
|
||||
var deferred = q.defer();
|
||||
|
||||
mkdirp(versionDir, function() {
|
||||
copy(latestDir, path.join(versionDir, 'api'), {
|
||||
deleteFirst: true,
|
||||
overwrite: true
|
||||
}, function(err, files) {
|
||||
deferred.resolve(docs);
|
||||
});
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
}
|
||||
};
|
||||
15
scripts/docs/processors/mark-properties.js
Normal file
15
scripts/docs/processors/mark-properties.js
Normal file
@@ -0,0 +1,15 @@
|
||||
"use strict";
|
||||
module.exports = function markProperties() {
|
||||
return {
|
||||
name: 'mark-properties',
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process: docs => docs.map(doc => {
|
||||
for (let i in doc.members) {
|
||||
if (doc.members.hasOwnProperty(i) && typeof doc.members[i].parameters === 'undefined') {
|
||||
doc.members[i].isProperty = true;
|
||||
}
|
||||
}
|
||||
return doc;
|
||||
})
|
||||
}
|
||||
};
|
||||
@@ -1,24 +1,19 @@
|
||||
"use strict";
|
||||
module.exports = function npmId(renderDocsProcessor) {
|
||||
return {
|
||||
name: 'npm-id',
|
||||
$runAfter: ['paths-computed'],
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process: function(docs) {
|
||||
var currentVersion = renderDocsProcessor.extraData.version.current.name;
|
||||
|
||||
$process: docs => {
|
||||
// pretty up and sort the docs object for menu generation
|
||||
docs = docs.filter(function(doc) {
|
||||
return (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page';
|
||||
});
|
||||
|
||||
docs.forEach(function(doc, i) {
|
||||
doc.npmId = doc.outputPath.replace('/README.md', '') // for readmes
|
||||
.replace('@ionic-native/plugins/','') // for readmes
|
||||
.replace('content/docs/v2/native/', '') // for docs
|
||||
.replace('/index.md', ''); // for docs
|
||||
docs.forEach(doc => {
|
||||
doc.npmId = doc.id.match(/plugins\/(.*)\/index/)[1];
|
||||
});
|
||||
|
||||
// returning docs will replace docs object in the next process
|
||||
return docs;
|
||||
}
|
||||
};
|
||||
|
||||
22
scripts/docs/processors/parse-optional.js
Normal file
22
scripts/docs/processors/parse-optional.js
Normal file
@@ -0,0 +1,22 @@
|
||||
"use strict";
|
||||
module.exports = function parseOptional() {
|
||||
return {
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process: docs => {
|
||||
docs.forEach(doc => {
|
||||
if (doc.members && doc.members.length) {
|
||||
for (let i in doc.members) {
|
||||
if (doc.members[i].params && doc.members[i].params.length) {
|
||||
for (let ii in doc.members[i].params) {
|
||||
if (doc.members[i].params[ii].optional) {
|
||||
doc.members[i].params[ii].description += '<strong class="tag">Optional</strong>';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
return docs;
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -1,22 +1,18 @@
|
||||
"use strict";
|
||||
module.exports = function readmes(renderDocsProcessor) {
|
||||
return {
|
||||
name: 'readmes',
|
||||
description: 'Create jekyll includes',
|
||||
$runAfter: ['paths-computed'],
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process: function(docs) {
|
||||
var currentVersion = renderDocsProcessor.extraData.version.current.name;
|
||||
|
||||
$process: docs => {
|
||||
// pretty up and sort the docs object for menu generation
|
||||
docs = docs.filter(function(doc) {
|
||||
return (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page';
|
||||
});
|
||||
docs = docs.filter(doc => (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page');
|
||||
|
||||
docs.forEach(function(doc, i) {
|
||||
docs.forEach(doc => {
|
||||
doc.outputPath = doc.outputPath.replace('src/', '');
|
||||
});
|
||||
|
||||
// returning docs will replace docs object in the next process
|
||||
return docs;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,22 +1,19 @@
|
||||
"use strict";
|
||||
module.exports = function removePrivateMembers() {
|
||||
return {
|
||||
name: 'remove-private-members',
|
||||
description: 'Remove member docs with @private tags',
|
||||
$runAfter: ['tags-parsed'],
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process: function(docs) {
|
||||
docs.forEach(function(doc) {
|
||||
$process: docs => {
|
||||
docs.forEach(doc => {
|
||||
|
||||
if (doc.members) {
|
||||
doc.members = doc.members.filter(function(member) {
|
||||
return !member.tags.tagsByName.get('hidden');
|
||||
});
|
||||
doc.members = doc.members.filter(member => !member.tags.tagsByName.get('hidden'));
|
||||
}
|
||||
|
||||
if (doc.statics) {
|
||||
doc.statics = doc.statics.filter(function(staticMethod) {
|
||||
return !staticMethod.tags.tagsByName.get('hidden');
|
||||
});
|
||||
doc.statics = doc.statics.filter(staticMethod => !staticMethod.tags.tagsByName.get('hidden'));
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
"use strict";
|
||||
module.exports = [
|
||||
{'name': 'advanced'},
|
||||
{'name': 'demo'},
|
||||
{'name': 'beta', transforms: function(doc, tag, value) {
|
||||
// make the value true or undefined instead of '' or undefined
|
||||
return typeof value !== 'undefined';
|
||||
}},
|
||||
{'name': 'beta', transforms: (doc, tag, value) => typeof value !== 'undefined'}, // make the value true or undefined instead of '' or undefined
|
||||
{'name': 'usage'},
|
||||
{'name': 'hidden'}, // hide from docs
|
||||
{'name': 'classes'}, // related classes
|
||||
|
||||
233
scripts/docs/templates/common.template.html
vendored
233
scripts/docs/templates/common.template.html
vendored
@@ -11,7 +11,7 @@ doc: "<$ doc.name $>"
|
||||
docType: "<$ doc.docType $>"
|
||||
---
|
||||
|
||||
<@ macro interfaceTable(interface) @>
|
||||
<@- macro interfaceTable(interface) -@>
|
||||
<@ for export in doc.moduleDoc.exports -@>
|
||||
<@ if export.name == interface @>
|
||||
<table class="table param-table" style="margin:0;">
|
||||
@@ -33,30 +33,21 @@ docType: "<$ doc.docType $>"
|
||||
</td>
|
||||
<td>
|
||||
<$ param.description | marked $>
|
||||
<@ if param.optional @><strong class="tag">Optional</strong><@ endif @>
|
||||
<@ if param.optional @><em>(optional)</em><@ endif @>
|
||||
</td>
|
||||
</tr>
|
||||
<@ endfor @>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<@ endif @>
|
||||
<@- endfor @>
|
||||
<@ endmacro @>
|
||||
|
||||
<@ macro paramList(paramData) -@>
|
||||
<@- if paramData -@><span class="params">(
|
||||
<@- for param in paramData -@>
|
||||
<span class="param"><$ param | escape $><@ if not loop.last @>, <@ endif @></span>
|
||||
<@- endfor @>)</span>
|
||||
<@- endif @>
|
||||
<@- endmacro -@>
|
||||
|
||||
<@ macro githubViewLink(doc) -@>
|
||||
<@- macro githubViewLink(doc) -@>
|
||||
<a href="https://github.com/driftyco/ionic-native/tree/master/<$ doc.fileInfo.relativePath $>#L<$ doc.location.start.line+1 $>-L<$ doc.location.end.line+1 $>"><$ doc.fileInfo.relativePath $> (line <$ doc.location.start.line+1 $>)</a>
|
||||
<@- endmacro -@>
|
||||
|
||||
<@ macro paramTable(params, isDirective) -@>
|
||||
<@- macro paramTable(params, isDirective) -@>
|
||||
<table class="table param-table" style="margin:0;">
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -66,140 +57,93 @@ docType: "<$ doc.docType $>"
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<@ for param in params @>
|
||||
<@- for param in params @>
|
||||
<tr>
|
||||
<td>
|
||||
<$ param.name $>
|
||||
<@ if param.alias @>| <$ param.alias $><@ endif @>
|
||||
<@- if param.alias @>| <$ param.alias $><@ endif -@>
|
||||
</td>
|
||||
<td>
|
||||
<$ typeList(param.typeList) $>
|
||||
</td>
|
||||
<td>
|
||||
<$ param.description | marked $>
|
||||
<@ if param.optional @><strong class="tag">Optional</strong><@ endif @>
|
||||
<@ if param.defaultValue @><p><em>(default: <$ param.defaultValue $>)</em></p><@ endif @>
|
||||
<@- if param.defaultValue @><p><em>(default: <$ param.defaultValue $>)</em></p><@ endif -@>
|
||||
</td>
|
||||
</tr>
|
||||
<@ endfor @>
|
||||
<@ endfor -@>
|
||||
</tbody>
|
||||
</table>
|
||||
<@- endmacro -@>
|
||||
|
||||
|
||||
<@- macro functionSyntax(fn) @>
|
||||
<@- set sep = joiner(', ') -@>
|
||||
<code><$ fn.name $><@- if not fn.isProperty @>(<@ endif -@><@- for param in fn.params @><$ sep() $>
|
||||
<@- if param.type.optional @>[<@ endif -@>
|
||||
<@- if param.type.optional @>[<@- endif -@>
|
||||
<$ param.name $>
|
||||
<@- if param.type.optional @>]<@ endif -@>
|
||||
<@ endfor @><@- if not fn.isProperty @>)<@ endif -@></code>
|
||||
<@ if fn.alias @><small>(alias: <$ fn.alias $>)</small><@ endif @>
|
||||
<@ endmacro -@>
|
||||
<@- if param.type.optional -@>]<@- endif -@>
|
||||
<@- endfor -@><@- if not fn.isProperty @>)<@- endif -@></code>
|
||||
<@- endmacro -@>
|
||||
|
||||
<@ macro typeList(types) -@>
|
||||
<@- macro typeList(types) -@>
|
||||
<@ set separator = joiner("|") @>
|
||||
<@ for type in types @><$ separator() $><$ type | code $><@ endfor @>
|
||||
<@- for type in types @><$ separator() $><$ type | code $><@ endfor -@>
|
||||
<@- endmacro -@>
|
||||
|
||||
<@- macro typeInfo(fn) -@>
|
||||
<$ typeList(fn.typeList) $> <$ fn.description $>
|
||||
<@- endmacro -@>
|
||||
|
||||
|
||||
|
||||
<@ macro documentClass(doc) @>
|
||||
<@- if doc.statics.length -@>
|
||||
<h2>Static Members</h2>
|
||||
<@ for method in doc.statics -@>
|
||||
<@ if not method.internal @>
|
||||
<div id="<$ method.name $>"></div>
|
||||
<h3><$ functionSyntax(method) $></h3>
|
||||
<@- macro documentPlatforms(method) -@>
|
||||
<@- if method.decorators @>
|
||||
<@ for prop in method.decorators[0].argumentInfo @>
|
||||
<@ if prop.platforms @>
|
||||
<p>
|
||||
<b>Platforms:</b>
|
||||
<@- for platform in prop.platforms @>
|
||||
<code><$ platform $></code>
|
||||
<@ endfor -@>
|
||||
<strong>Platforms:</strong>
|
||||
<@- for platform in prop.platforms -@>
|
||||
<strong class="tag"><$ platform $></strong>
|
||||
<@- endfor -@>
|
||||
</p>
|
||||
<@ endif @>
|
||||
<@ endfor @>
|
||||
<@- endif @>
|
||||
<@- endmacro -@>
|
||||
|
||||
<$ method.description $>
|
||||
|
||||
<@ if method.params @>
|
||||
<$ paramTable(method.params) $>
|
||||
<@ endif @>
|
||||
|
||||
<@ if method.this -@>
|
||||
<h4> Method's `this`
|
||||
<$ method.this $>
|
||||
</h4>
|
||||
<@- endif @>
|
||||
|
||||
<@ if method.returns @>
|
||||
<div class="return-value" markdown="1">
|
||||
<i class="icon ion-arrow-return-left"></i>
|
||||
<b>Returns:</b> <$ typeInfo(method.returns) $>
|
||||
</div>
|
||||
<@ endif @>
|
||||
<@ endif @>
|
||||
<@ endfor -@>
|
||||
<@ endif @>
|
||||
|
||||
<!-- methods on the class -->
|
||||
<@- if doc.members and doc.members.length @>
|
||||
|
||||
<h2>Instance Members</h2>
|
||||
<@ for method in doc.members -@>
|
||||
<div id="<$ method.name $>"></div>
|
||||
<h3>
|
||||
<$ functionSyntax(method) $>
|
||||
</h3>
|
||||
<@ macro documentMethod(method) -@>
|
||||
<h3><a class="anchor" name="<$ method.name $>" href="#<$ method.name $>"></a><$ functionSyntax(method) $></h3>
|
||||
<$ documentPlatforms(method) $>
|
||||
<$ method.description $>
|
||||
<@ if method.params -@>
|
||||
<$ paramTable(method.params) $>
|
||||
<@- endif @>
|
||||
<@ if method.this -@>
|
||||
<h4> Method's `this`
|
||||
<$ method.this $>
|
||||
</h4>
|
||||
<@- endif @>
|
||||
|
||||
<@ if method.returns -@>
|
||||
<div class="return-value" markdown="1">
|
||||
<i class="icon ion-arrow-return-left"></i>
|
||||
<b>Returns:</b> <$ typeInfo(method.returns) $>
|
||||
</div>
|
||||
<@- endif @>
|
||||
<@- endmacro -@>
|
||||
|
||||
<@- macro documentClass(doc) @>
|
||||
<@- if doc.statics.length -@>
|
||||
<h2>Static Members</h2>
|
||||
<@ for method in doc.statics -@>
|
||||
<$ documentMethod(method) $>
|
||||
<@ endfor -@>
|
||||
<@ endif @>
|
||||
|
||||
<# --- methods in class --- #>
|
||||
<@- if doc.members and doc.members.length @>
|
||||
|
||||
<h2>Instance Members</h2>
|
||||
<@ for method in doc.members -@>
|
||||
<$ documentMethod(method) $>
|
||||
<@- endfor @>
|
||||
<@- endif -@>
|
||||
<@ endmacro @>
|
||||
<@ block body @>
|
||||
<@ block content @>
|
||||
<@ block header @>
|
||||
<h1 class="api-title">
|
||||
<@ if doc.docType == "directive" @>
|
||||
<$ doc.name | dashCase $>
|
||||
<@ else @>
|
||||
<$ doc.name $>
|
||||
<@ endif @>
|
||||
|
||||
<@ if doc.parent @>
|
||||
<br />
|
||||
<small>
|
||||
Child of <$ doc.parent $>
|
||||
</small>
|
||||
<@ endif @>
|
||||
|
||||
<@ if doc.delegate @>
|
||||
<br/>
|
||||
<small>
|
||||
Delegate: <$ doc.delegate $>
|
||||
</small>
|
||||
<@ endif @>
|
||||
<h1 class="api-title"><$ doc.name $>
|
||||
<@- if doc.beta == true -@>
|
||||
<span class="beta" title="beta">β</span>
|
||||
<@- endif -@>
|
||||
@@ -209,13 +153,9 @@ docType: "<$ doc.docType $>"
|
||||
Improve this doc
|
||||
</a>
|
||||
|
||||
<@ endblock @>
|
||||
|
||||
<!-- decorators -->
|
||||
<# --- Decorators --- #>
|
||||
<@- if doc.decorators @>
|
||||
|
||||
<@ for prop in doc.decorators[0].argumentInfo @>
|
||||
|
||||
<@ if doc.beta == true @>
|
||||
<p class="beta-notice">
|
||||
This plugin is still in beta stage and may not work as expected. Please
|
||||
@@ -224,7 +164,8 @@ docType: "<$ doc.docType $>"
|
||||
</p>
|
||||
<@ endif @>
|
||||
|
||||
<pre><code>$ <@ if prop.install @><$ prop.install $><@ else @>ionic plugin add <$ prop.plugin $><@ endif @>
|
||||
<# --- Install commands --- #>
|
||||
<pre><code class="nohighlight">$ <@ if prop.install @><$ prop.install $><@ else @>ionic plugin add <$ prop.plugin $><@ endif @>
|
||||
$ npm install --save @ionic-native/<$ doc.npmId $>
|
||||
</code></pre>
|
||||
<p>Repo:
|
||||
@@ -233,48 +174,34 @@ $ npm install --save @ionic-native/<$ doc.npmId $>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<!-- description -->
|
||||
<@ block description @>
|
||||
<# --- Plugin description --- #>
|
||||
<$ doc.description | marked $>
|
||||
<@ endblock @>
|
||||
|
||||
|
||||
<@- if doc.directiveInfo @>
|
||||
<h2><$ doc.directiveInfo.type $></h2>
|
||||
<h3><$ doc.directiveInfo.properties[0].name $>: <code><$ doc.directiveInfo.properties[0].values $></code></h3>
|
||||
<@ endif -@>
|
||||
|
||||
<# --- Plugin supported platforms --- #>
|
||||
<@ if prop.platforms @>
|
||||
<!-- @platforms tag -->
|
||||
<h2>Supported platforms</h2>
|
||||
<@ block platforms @>
|
||||
<ul>
|
||||
<@ for platform in prop.platforms -@>
|
||||
<li><$ platform $></li>
|
||||
<@- endfor @>
|
||||
</ul>
|
||||
<@ endblock @>
|
||||
<!-- @platforms tag end -->
|
||||
<@ endif @>
|
||||
<@ endfor @>
|
||||
<@ endif -@><!-- if doc.decorators -->
|
||||
<@ endif -@> <# --- end of: if doc.decorators --- #>
|
||||
|
||||
<!-- @usage tag -->
|
||||
<# --- Plugin usage --- #>
|
||||
<@ if doc.usage @>
|
||||
<h2>Usage</h2>
|
||||
<@ block usage @>
|
||||
<$ doc.usage | marked $>
|
||||
<@ endblock @>
|
||||
<@ endif @>
|
||||
|
||||
<!-- @property tags -->
|
||||
<@ if doc.properties @>
|
||||
<# --- Plugin attributes --- #>
|
||||
<@- if doc.properties -@>
|
||||
<h2>Attributes:</h2>
|
||||
<table class="table" style="margin:0;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Attribute</th>
|
||||
|
||||
<@ set hasTypes = false @>
|
||||
<@ for prop in doc.properties @>
|
||||
<@ if prop.type @>
|
||||
@@ -284,12 +211,11 @@ $ npm install --save @ionic-native/<$ doc.npmId $>
|
||||
<@ if hasTypes @>
|
||||
<th>Type</th>
|
||||
<@ endif @>
|
||||
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<@ for prop in doc.properties -@>
|
||||
<@- for prop in doc.properties -@>
|
||||
<tr>
|
||||
<td>
|
||||
<$ prop.name $>
|
||||
@@ -299,48 +225,44 @@ $ npm install --save @ionic-native/<$ doc.npmId $>
|
||||
<$ prop.type.name $>
|
||||
</td>
|
||||
<@ endif @>
|
||||
|
||||
<td>
|
||||
<$ prop.description $>
|
||||
</td>
|
||||
</tr>
|
||||
<@- endfor @>
|
||||
<@ endfor -@>
|
||||
</tbody>
|
||||
</table>
|
||||
<@ endif @>
|
||||
<@- endif -@>
|
||||
|
||||
<# --- Plugin class documentation --- #>
|
||||
<$ documentClass(doc) $>
|
||||
|
||||
<@ block advanced @>
|
||||
<# --- Advanced usage --- #>
|
||||
<@- if doc.advanced -@>
|
||||
<h2><a class="anchor" name="advanced" href="#advanced"></a>Advanced</h2>
|
||||
<$ doc.advanced | marked $>
|
||||
<@- endif -@>
|
||||
<@ endblock @>
|
||||
|
||||
<!-- other classes -->
|
||||
<@ for tag in doc.tags.tags -@>
|
||||
<@ if tag.tagName == 'classes' -@>
|
||||
<!--<h2><a class="anchor" name="related-classes" href="#related-classes"></a>Related Classes</h2>-->
|
||||
<@ set classes = tag.description.split('\n') @>
|
||||
<@ for item in classes -@>
|
||||
<@ if item.length > 1 @>
|
||||
<@ for export in doc.moduleDoc.exports -@>
|
||||
<@ if export.name == item @>
|
||||
<# --- Other classes --- #>
|
||||
<@- for tag in doc.tags.tags -@>
|
||||
<@- if tag.tagName == 'classes' -@>
|
||||
<@- set classes = tag.description.split('\n') -@>
|
||||
<@- for item in classes -@>
|
||||
<@- if item.length > 1 -@>
|
||||
<@- for export in doc.moduleDoc.exports -@>
|
||||
<@- if export.name == item -@>
|
||||
<h2><a class="anchor" name="<$ item $>" href="#<$ item $>"></a><$ item $></h2>
|
||||
<$ documentClass(export) $>
|
||||
<@ endif @>
|
||||
<@- endfor @>
|
||||
<@ endif @>
|
||||
<@- endfor @>
|
||||
<@- endif @>
|
||||
<@- endfor @>
|
||||
<!-- end other classes -->
|
||||
<@- endif -@>
|
||||
<@- endfor -@>
|
||||
<@- endif -@>
|
||||
<@- endfor -@>
|
||||
<@- endif -@>
|
||||
<@- endfor -@>
|
||||
|
||||
<!-- interfaces -->
|
||||
<# --- Other interfaces --- #>
|
||||
<@ for tag in doc.tags.tags -@>
|
||||
<@ if tag.tagName == 'interfaces' @>
|
||||
<!--<h2><a class="anchor" name="interfaces" href="#interfaces"></a>Interfaces</h2>-->
|
||||
<@ set interfaces = tag.description.split('\n') @>
|
||||
<@ for item in interfaces -@>
|
||||
<@ if item.length > 1 @>
|
||||
@@ -350,21 +272,12 @@ $ npm install --save @ionic-native/<$ doc.npmId $>
|
||||
<@- endfor @>
|
||||
<@ endif @>
|
||||
<@- endfor @>
|
||||
<!-- end interfaces -->
|
||||
|
||||
<!-- related link -->
|
||||
|
||||
<# --- Related links --- #>
|
||||
<@- if doc.see @>
|
||||
|
||||
<h2>Related</h2>
|
||||
<h2><a class="anchor" name="related" href="#related"></a>Related</h2>
|
||||
<@ for s in doc.see @>
|
||||
<$ s | safe $>
|
||||
<@- endfor -@>
|
||||
|
||||
<@- endif -@>
|
||||
|
||||
|
||||
<!-- end content block -->
|
||||
<@ endblock @>
|
||||
|
||||
<!-- end body block -->
|
||||
<@ endblock @>
|
||||
|
||||
11
scripts/docs/templates/native_menu.template.html
vendored
11
scripts/docs/templates/native_menu.template.html
vendored
@@ -1,9 +1,14 @@
|
||||
<@ for doc in docs @><@ if doc.URL and doc.private != true and doc.beta != true @>
|
||||
<li class="capitalize {% if page.id == 'overview' %}active{% endif %}">
|
||||
<a href="/docs/v2/native/">Overview</a>
|
||||
</li>
|
||||
<li class="capitalize {% if page.id == 'mocking' %}active{% endif %}">
|
||||
<a href="/docs/v2/native/browser.html">Browser Usage</a>
|
||||
</li>
|
||||
<@- for doc in docs @><@ if doc.URL and doc.private != true and doc.beta != true @>
|
||||
<li class="capitalize {% if page.id == '<$ doc.name|lower|dashify $>' %}active{% endif %}">
|
||||
<a href="/<$ doc.URL $>"><$ doc.name $></a>
|
||||
</li><@ endif @><@ endfor @>
|
||||
|
||||
<@ for doc in docs @><@ if doc.URL and doc.private != true and doc.beta == true @>
|
||||
<@- for doc in docs @><@ if doc.URL and doc.private != true and doc.beta == true @>
|
||||
<li class="capitalize {% if page.id == '<$ doc.name|lower|dashify $>' %}active{% endif %}">
|
||||
<a href="/<$ doc.URL $>"><$ doc.name $> <span class="beta">β</span></a>
|
||||
</li><@ endif @><@ endfor @>
|
||||
|
||||
@@ -23,16 +23,18 @@ function run {
|
||||
# CD in to the site dir to commit updated docs
|
||||
cd $SITE_DIR
|
||||
|
||||
# Add all files to git
|
||||
git add .
|
||||
|
||||
# if no changes, don't commit
|
||||
CHANGED=$(git diff-index --name-only HEAD --)
|
||||
if [ -z "$CHANGED" ];
|
||||
CHANGED=$(git diff-index --name-only HEAD 2>/dev/null | wc -l)
|
||||
if [ $CHANGED -eq 0 ];
|
||||
then
|
||||
echo "-- No changes detected for the following commit, docs not updated."
|
||||
echo "https://github.com/driftyco/$CIRCLE_PROJECT_REPONAME/commit/$CIRCLE_SHA1"
|
||||
else
|
||||
git config --global user.email "hi@ionicframework.com"
|
||||
git config --global user.name "Ionitron"
|
||||
git add -A
|
||||
git commit -am "Automated build of native docs driftyco/$CIRCLE_PROJECT_REPONAME@$CIRCLE_SHA1"
|
||||
# in case a different commit was pushed to ionic-site during doc/demo gen,
|
||||
# try to rebase around it before pushing
|
||||
|
||||
@@ -259,6 +259,7 @@ export function CordovaInstance(opts: any = {}) {
|
||||
*/
|
||||
export function CordovaProperty(target: any, key: string) {
|
||||
Object.defineProperty(target, key, {
|
||||
enumerable: true,
|
||||
get: () => {
|
||||
if (checkAvailability(target, key) === true) {
|
||||
return getPlugin(target.constructor.getPluginRef())[key];
|
||||
@@ -282,6 +283,7 @@ export function CordovaProperty(target: any, key: string) {
|
||||
*/
|
||||
export function InstanceProperty(target: any, key: string) {
|
||||
Object.defineProperty(target, key, {
|
||||
enumerable: true,
|
||||
get: function(){
|
||||
return this._objectInstance[key];
|
||||
},
|
||||
|
||||
@@ -33,7 +33,7 @@ export class Base64ToGallery {
|
||||
/**
|
||||
* Converts a base64 string to an image file in the device gallery
|
||||
* @param {string} data The actual base64 string that you want to save
|
||||
* @param {any} options (optional) An object with properties: prefix: string, mediaScanner: boolean. Prefix will be prepended to the filename. If true, mediaScanner runs Media Scanner on Android and saves to Camera Roll on iOS; if false, saves to Library folder on iOS.
|
||||
* @param {any} [options] An object with properties: prefix: string, mediaScanner: boolean. Prefix will be prepended to the filename. If true, mediaScanner runs Media Scanner on Android and saves to Camera Roll on iOS; if false, saves to Library folder on iOS.
|
||||
* @returns {Promise<any>} returns a promise that resolves when the image is saved.
|
||||
*/
|
||||
@Cordova({
|
||||
|
||||
@@ -17,7 +17,7 @@ import { Injectable } from '@angular/core';
|
||||
*
|
||||
* if (isAvailable) {
|
||||
*
|
||||
* browserTab.open('https://ionic.io');
|
||||
* browserTab.openUrl('https://ionic.io');
|
||||
*
|
||||
* } else {
|
||||
*
|
||||
|
||||
@@ -57,7 +57,7 @@ export interface CameraPreviewPictureOptions {
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { CameraPreview, PictureOptions, CameraPreviewOptions, CameraPreviewDimensions } from 'ionic-native';
|
||||
* import { CameraPreview, PictureOptions, CameraPreviewOptions, CameraPreviewDimensions } from '@ionic-native/camera-preview';
|
||||
*
|
||||
* constructor(private cameraPreview: CameraPreview) { }
|
||||
*
|
||||
@@ -187,7 +187,7 @@ export class CameraPreview {
|
||||
|
||||
/**
|
||||
* Take the picture (base64)
|
||||
* @param options {CameraPreviewPictureOptions} optional - size and quality of the picture to take
|
||||
* @param [options] {CameraPreviewPictureOptions} size and quality of the picture to take
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
@@ -211,7 +211,7 @@ export class CameraPreview {
|
||||
|
||||
/**
|
||||
* Set the zoom (Android)
|
||||
* @param zoom {number} Zoom value
|
||||
* @param [zoom] {number} Zoom value
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
@@ -223,7 +223,7 @@ export class CameraPreview {
|
||||
|
||||
/**
|
||||
* Set the preview Size
|
||||
* @param dimensions {CameraPreviewDimensions}
|
||||
* @param [dimensions] {CameraPreviewDimensions}
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
@@ -235,7 +235,7 @@ export class CameraPreview {
|
||||
|
||||
/**
|
||||
* Set the flashmode
|
||||
* @param flashMode {string} 'off' (iOS & Android), 'on' (iOS & Android), 'auto' (iOS & Android), 'torch' (Android)
|
||||
* @param [flashMode] {string} 'off' (iOS & Android), 'on' (iOS & Android), 'auto' (iOS & Android), 'torch' (Android)
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova({
|
||||
|
||||
@@ -90,7 +90,7 @@ export interface CameraPopoverOptions {
|
||||
* @description
|
||||
* Take a photo or capture video.
|
||||
*
|
||||
* Requires {@link module:driftyco/ionic-native} and the Cordova plugin: `cordova-plugin-camera`. For more info, please see the [Cordova Camera Plugin Docs](https://github.com/apache/cordova-plugin-camera).
|
||||
* Requires and the Cordova plugin: `cordova-plugin-camera`. For more info, please see the [Cordova Camera Plugin Docs](https://github.com/apache/cordova-plugin-camera).
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
@@ -101,10 +101,10 @@ export interface CameraPopoverOptions {
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* constant options: CameraOptions = {
|
||||
* const options: CameraOptions = {
|
||||
* quality: 100,
|
||||
* destinationType: this.camera.DestinationType.DATA_URL,
|
||||
* enodingType: this.camera.EncodingType.JPEG,
|
||||
* encodingType: this.camera.EncodingType.JPEG,
|
||||
* mediaType: this.camera.MediaType.PICTURE
|
||||
* }
|
||||
*
|
||||
@@ -120,7 +120,6 @@ export interface CameraPopoverOptions {
|
||||
* CameraOptions
|
||||
* CameraPopoverOptions
|
||||
*/
|
||||
@Injectable()
|
||||
@Plugin({
|
||||
pluginName: 'Camera',
|
||||
plugin: 'cordova-plugin-camera',
|
||||
@@ -128,6 +127,7 @@ export interface CameraPopoverOptions {
|
||||
repo: 'https://github.com/apache/cordova-plugin-camera',
|
||||
platforms: ['Android', 'BlackBerry', 'Browser', 'Firefox', 'FireOS', 'iOS', 'Windows', 'Windows Phone 8', 'Ubuntu']
|
||||
})
|
||||
@Injectable()
|
||||
export class Camera {
|
||||
|
||||
/**
|
||||
@@ -201,7 +201,7 @@ export class Camera {
|
||||
|
||||
/**
|
||||
* Take a picture or video, or load one from the library.
|
||||
* @param {CameraOptions?} options optional. Options that you want to pass to the camera. Encoding type, quality, etc. Platform-specific quirks are described in the [Cordova plugin docs](https://github.com/apache/cordova-plugin-camera#cameraoptions-errata-).
|
||||
* @param {CameraOptions} [options] Options that you want to pass to the camera. Encoding type, quality, etc. Platform-specific quirks are described in the [Cordova plugin docs](https://github.com/apache/cordova-plugin-camera#cameraoptions-errata-).
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with Base64 encoding of the image data, or the image file URI, depending on cameraOptions, otherwise rejects with an error.
|
||||
*/
|
||||
@Cordova({
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CordovaInstance, InstanceProperty, Plugin, getPromise } from '@ionic-native/core';
|
||||
import { CordovaInstance, InstanceProperty, Plugin, getPromise, InstanceCheck, checkAvailability } from '@ionic-native/core';
|
||||
|
||||
declare var window: any,
|
||||
navigator: any;
|
||||
@@ -72,9 +72,12 @@ export class Contact implements IContactProperties {
|
||||
@InstanceProperty urls: IContactField[];
|
||||
|
||||
constructor() {
|
||||
this._objectInstance = navigator.contacts.create();
|
||||
if (checkAvailability(navigator.contacts, 'create', 'Contacts') === true) {
|
||||
this._objectInstance = navigator.contacts.create();
|
||||
}
|
||||
}
|
||||
|
||||
@InstanceCheck()
|
||||
clone(): Contact {
|
||||
let newContact = new Contact();
|
||||
for (let prop in this) {
|
||||
@@ -87,6 +90,7 @@ export class Contact implements IContactProperties {
|
||||
@CordovaInstance()
|
||||
remove(): Promise<any> { return; }
|
||||
|
||||
@InstanceCheck()
|
||||
save(): Promise<any> {
|
||||
return getPromise((resolve, reject) => {
|
||||
this._objectInstance.save((contact) => {
|
||||
|
||||
@@ -234,7 +234,7 @@ export class Diagnostic {
|
||||
* Returns the location authorization status for the application.
|
||||
* Note for Android: this is intended for Android 6 / API 23 and above. Calling on Android 5 / API 22 and below will always return GRANTED status as permissions are already granted at installation time.
|
||||
*
|
||||
* mode - (iOS-only / optional) location authorization mode: "always" or "when_in_use". If not specified, defaults to "when_in_use".
|
||||
* @param {string} [mode] iOS only: location authorization mode: "always" or "when_in_use". If not specified, defaults to "when_in_use".
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
@Cordova({ platforms: ['Android', 'iOS'], callbackOrder: 'reverse' })
|
||||
|
||||
@@ -84,7 +84,7 @@ export class EmailComposer {
|
||||
/**
|
||||
* Verifies if sending emails is supported on the device.
|
||||
*
|
||||
* @param app {string?} An optional app id or uri scheme.
|
||||
* @param [app] {string} App id or uri scheme.
|
||||
* @returns {Promise<any>} Resolves if available, rejects if not available
|
||||
*/
|
||||
@CordovaCheck()
|
||||
@@ -123,7 +123,7 @@ export class EmailComposer {
|
||||
* Displays the email composer pre-filled with data.
|
||||
*
|
||||
* @param options {EmailComposerOptions} Email
|
||||
* @param scope {any?} An optional scope for the promise
|
||||
* @param [scope] {any} Scope for the promise
|
||||
* @returns {Promise<any>} Resolves promise when the EmailComposer has been opened
|
||||
*/
|
||||
@Cordova({
|
||||
|
||||
@@ -381,7 +381,7 @@ export class EstimoteBeacons {
|
||||
* @param [notifyEntryStateOnDisplay=false] {boolean} Set to true to detect if you
|
||||
* are inside a region when the user turns display on, see
|
||||
* {@link https://developer.apple.com/library/prerelease/ios/documentation/CoreLocation/Reference/CLBeaconRegion_class/index.html#//apple_ref/occ/instp/CLBeaconRegion/notifyEntryStateOnDisplay|iOS documentation}
|
||||
* for further details (optional, defaults to false, iOS only).
|
||||
* for further details (iOS only).
|
||||
* @returns {Observable<any>} Returns an Observable that notifies of each region state discovered.
|
||||
*/
|
||||
@Cordova({
|
||||
|
||||
@@ -268,9 +268,8 @@ export class Facebook {
|
||||
*
|
||||
*
|
||||
* @param {Object} options An object containing an [App Link](https://developers.facebook.com/docs/applinks) URL to your app and an optional image URL.
|
||||
* url: [App Link](https://developers.facebook.com/docs/applinks) to your app
|
||||
* picture: image to be displayed in the App Invite dialog
|
||||
*
|
||||
* @param {string} options.url [App Link](https://developers.facebook.com/docs/applinks) to your app
|
||||
* @param {string} [options.picture] image to be displayed in the App Invite dialog
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with the result data, or rejects with an error
|
||||
*/
|
||||
@Cordova()
|
||||
|
||||
@@ -82,7 +82,6 @@ declare var window: any;
|
||||
repo: 'https://github.com/cowbell/cordova-plugin-geofence/',
|
||||
platforms: ['Android', 'iOS', 'Windows Phone 8', 'Windows Phone']
|
||||
})
|
||||
|
||||
@Injectable()
|
||||
export class Geofence {
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ export class Gyroscope {
|
||||
|
||||
/**
|
||||
* Watching for gyroscope sensor changes
|
||||
* @param options {GyroscopeOptions} (optional)
|
||||
* @param {GyroscopeOptions} [options]
|
||||
* @return {Observable<GyroscopeOrientation>} Returns an Observable that resolves GyroscopeOrientation
|
||||
*/
|
||||
watch(options?: GyroscopeOptions): Observable<GyroscopeOrientation> {
|
||||
@@ -99,7 +99,7 @@ export class Gyroscope {
|
||||
|
||||
/**
|
||||
* Get current data from gyroscope sensor
|
||||
* @param options {GyroscopeOptions} (optional)
|
||||
* @param {GyroscopeOptions} [options]
|
||||
* @return {Promise<GyroscopeOrientation>} Returns a promise that resolves GyroscopeOrientation
|
||||
*/
|
||||
@Cordova({
|
||||
|
||||
@@ -167,13 +167,13 @@ export interface HealthData {
|
||||
* HealthStoreOptions
|
||||
* HealthData
|
||||
*/
|
||||
@Injectable()
|
||||
@Plugin({
|
||||
pluginName: 'Health',
|
||||
plugin: 'cordova-plugin-health',
|
||||
pluginRef: 'navigator.health',
|
||||
repo: 'https://github.com/dariosalvi78/cordova-plugin-health'
|
||||
})
|
||||
@Injectable()
|
||||
export class Health {
|
||||
|
||||
/**
|
||||
|
||||
@@ -69,9 +69,9 @@ export class InAppBrowserObject {
|
||||
|
||||
/**
|
||||
* Opens a URL in a new InAppBrowser instance, the current browser instance, or the system browser.
|
||||
* @param url The URL to load.
|
||||
* @param target The target in which to load the URL, an optional parameter that defaults to _self.
|
||||
* @param options Options for the InAppBrowser. Optional, defaulting to: location=yes.
|
||||
* @param {string} url The URL to load.
|
||||
* @param {string} [target="self"] The target in which to load the URL, an optional parameter that defaults to _self.
|
||||
* @param {string | InAppBrowserOptions} [options] Options for the InAppBrowser. Optional, defaulting to: location=yes.
|
||||
* The options string must not contain any blank space, and each feature's
|
||||
* name/value pairs must be separated by a comma. Feature names are case insensitive.
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
|
||||
import { Plugin, Cordova } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name LocationAccuracy
|
||||
* @name Location Accuracy
|
||||
* @description
|
||||
* This Cordova/Phonegap plugin for Android and iOS to request enabling/changing of Location Services by triggering a native dialog from within the app, avoiding the need for the user to leave your app to change location settings manually.
|
||||
*
|
||||
|
||||
@@ -127,7 +127,7 @@ export class MediaObject {
|
||||
}
|
||||
|
||||
/**
|
||||
* @name MediaPlugin
|
||||
* @name Media
|
||||
* @description
|
||||
* @usage
|
||||
* ```typescript
|
||||
|
||||
@@ -109,12 +109,12 @@ export class Mixpanel {
|
||||
/**
|
||||
* @hidden
|
||||
*/
|
||||
@Injectable()
|
||||
@Plugin({
|
||||
plugin: 'cordova-plugin-mixpanel',
|
||||
pluginRef: 'mixpanel.people',
|
||||
pluginName: 'Mixpanel'
|
||||
})
|
||||
@Injectable()
|
||||
export class MixpanelPeople {
|
||||
|
||||
/**
|
||||
|
||||
@@ -34,7 +34,7 @@ declare var navigator: any;
|
||||
*
// before we determine the connection type. Might need to wait
|
||||
* // prior to doing any api requests as well.
|
||||
* setTimeout(() => {
|
||||
* if (Network.type === 'wifi') {
|
||||
* if (this.network.type === 'wifi') {
|
||||
* console.log('we got a wifi connection, woohoo!');
|
||||
* }
|
||||
* }, 3000);
|
||||
|
||||
@@ -184,12 +184,12 @@ export class NFC {
|
||||
/**
|
||||
* @hidden
|
||||
*/
|
||||
@Injectable()
|
||||
@Plugin({
|
||||
pluginName: 'NFC',
|
||||
plugin: 'phonegap-nfc',
|
||||
pluginRef: 'ndef'
|
||||
})
|
||||
@Injectable()
|
||||
export class Ndef {
|
||||
|
||||
@Cordova({ sync: true })
|
||||
|
||||
@@ -379,6 +379,8 @@ export class OneSignal {
|
||||
/**
|
||||
* Retrieve a list of tags that have been set on the user from the OneSignal server.
|
||||
*
|
||||
* **Quirk**: You must wait for `getTags` to resolve before calling it again, as the plugin will only process the last method call and discard any previous ones.
|
||||
*
|
||||
* @returns {Promise<any>} Returns a Promise that resolves when tags are recieved.
|
||||
*/
|
||||
@Cordova()
|
||||
|
||||
@@ -53,7 +53,7 @@ export class SecureStorageObject {
|
||||
* @usage
|
||||
*
|
||||
* ```typescript
|
||||
* import { SecureStorage, SecureStorageOBject } from '@ionic-native/secure-storage';
|
||||
* import { SecureStorage, SecureStorageObject } from '@ionic-native/secure-storage';
|
||||
*
|
||||
* constructor(private secureStorage: SecureStorage) { }
|
||||
*
|
||||
@@ -90,7 +90,7 @@ export class SecureStorageObject {
|
||||
@Plugin({
|
||||
pluginName: 'SecureStorage',
|
||||
plugin: 'cordova-plugin-secure-storage',
|
||||
pluginRef: 'plugins.securestorage',
|
||||
pluginRef: 'cordova.plugins.SecureStorage',
|
||||
repo: 'https://github.com/Crypho/cordova-plugin-secure-storage',
|
||||
platforms: ['Android', 'iOS', 'Windows Phone', 'Browser']
|
||||
})
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"module": "es2015",
|
||||
"moduleResolution": "node",
|
||||
"paths": {
|
||||
"@ionic-native/core": ["./dist/packages-dist/@ionic-native/core"]
|
||||
"@ionic-native/core": ["./dist/@ionic-native/core"]
|
||||
},
|
||||
"rootDir": ".",
|
||||
"target": "es5",
|
||||
|
||||
Reference in New Issue
Block a user