BREAKING CHANGE(core): switch to esm

This commit is contained in:
Philipp Kunz 2022-06-25 03:19:16 +02:00
parent d33f943fc6
commit 5f1bc8dc29
17 changed files with 11191 additions and 1041 deletions

4
.gitignore vendored
View File

@ -15,8 +15,6 @@ node_modules/
# builds # builds
dist/ dist/
dist_web/ dist_*/
dist_serve/
dist_ts_web/
# custom # custom

View File

@ -12,6 +12,9 @@ stages:
- release - release
- metadata - metadata
before_script:
- npm install -g @shipzone/npmci
# ==================== # ====================
# security stage # security stage
# ==================== # ====================
@ -19,22 +22,36 @@ mirror:
stage: security stage: security
script: script:
- npmci git mirror - npmci git mirror
only:
- tags
tags: tags:
- lossless - lossless
- docker - docker
- notpriv - notpriv
snyk: auditProductionDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:snyk image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci npm prepare
- npmci command npm install --production --ignore-scripts
- npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high --only=prod --production
tags:
- docker
allow_failure: true
auditDevDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security stage: security
script: script:
- npmci npm prepare - npmci npm prepare
- npmci command npm install --ignore-scripts - npmci command npm install --ignore-scripts
- npmci command snyk test - npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high --only=dev
tags: tags:
- lossless
- docker - docker
- notpriv allow_failure: true
# ==================== # ====================
# test stage # test stage
@ -49,9 +66,7 @@ testStable:
- npmci npm test - npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- lossless
- docker - docker
- priv
testBuild: testBuild:
stage: test stage: test
@ -62,9 +77,7 @@ testBuild:
- npmci command npm run build - npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- lossless
- docker - docker
- notpriv
release: release:
stage: release stage: release
@ -84,11 +97,12 @@ release:
codequality: codequality:
stage: metadata stage: metadata
allow_failure: true allow_failure: true
only:
- tags
script: script:
- npmci command npm install -g tslint typescript - npmci command npm install -g typescript
- npmci npm prepare - npmci npm prepare
- npmci npm install - npmci npm install
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
tags: tags:
- lossless - lossless
- docker - docker
@ -108,11 +122,10 @@ trigger:
pages: pages:
stage: metadata stage: metadata
script: script:
- npmci node install lts - npmci node install stable
- npmci command npm install -g @gitzone/tsdoc
- npmci npm prepare - npmci npm prepare
- npmci npm install - npmci npm install
- npmci command tsdoc - npmci command npm run buildDocs
tags: tags:
- lossless - lossless
- docker - docker

23
.snyk
View File

@ -1,23 +0,0 @@
# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
version: v1.13.5
# ignores vulnerabilities until expiry date; change duration by modifying expiry date
ignore:
SNYK-JS-JSYAML-173999:
- '@pushrocks/smartfm > gray-matter > js-yaml':
reason: None given
expires: '2019-10-10T16:23:38.993Z'
- '@pushrocks/smartyaml > js-yaml':
reason: None given
expires: '2019-10-10T16:23:38.993Z'
SNYK-JS-JSYAML-174129:
- '@pushrocks/smartfm > gray-matter > js-yaml':
reason: None given
expires: '2019-10-10T16:23:38.993Z'
- '@pushrocks/smartyaml > js-yaml':
reason: None given
expires: '2019-10-10T16:23:38.993Z'
SNYK-JS-LODASH-450202:
- '@pushrocks/smartinteract > inquirer > lodash':
reason: None given
expires: '2019-10-10T16:23:38.993Z'
patch: {}

24
.vscode/launch.json vendored
View File

@ -2,28 +2,10 @@
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{ {
"name": "current file", "command": "npm test",
"type": "node", "name": "Run npm test",
"request": "launch", "request": "launch",
"args": [ "type": "node-terminal"
"${relativeFile}"
],
"runtimeArgs": ["-r", "@gitzone/tsrun"],
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"internalConsoleOptions": "openOnSessionStart"
},
{
"name": "test.ts",
"type": "node",
"request": "launch",
"args": [
"test/test.ts"
],
"runtimeArgs": ["-r", "@gitzone/tsrun"],
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"internalConsoleOptions": "openOnSessionStart"
} }
] ]
} }

View File

@ -15,7 +15,7 @@
"properties": { "properties": {
"projectType": { "projectType": {
"type": "string", "type": "string",
"enum": ["website", "element", "service", "npm"] "enum": ["website", "element", "service", "npm", "wcc"]
} }
} }
} }

View File

@ -12,7 +12,7 @@
"githost": "gitlab.com", "githost": "gitlab.com",
"gitscope": "pushrocks", "gitscope": "pushrocks",
"gitrepo": "smartscaf", "gitrepo": "smartscaf",
"shortDescription": "scaffold projects quickly", "description": "scaffold projects quickly",
"npmPackagename": "@pushrocks/smartscaf", "npmPackagename": "@pushrocks/smartscaf",
"license": "MIT" "license": "MIT"
} }

11994
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -3,11 +3,12 @@
"version": "3.0.10", "version": "3.0.10",
"private": false, "private": false,
"description": "scaffold projects quickly", "description": "scaffold projects quickly",
"main": "dist/index.js", "main": "dist_ts/index.js",
"typings": "dist/index.d.ts", "typings": "dist_ts/index.d.ts",
"scripts": { "scripts": {
"test": "(tstest test/)", "test": "(tstest test/)",
"build": "(tsbuild)" "build": "(tsbuild)",
"buildDocs": "tsdoc"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@ -25,34 +26,39 @@
"npm" "npm"
], ],
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.17", "@gitzone/tsbuild": "^2.1.63",
"@gitzone/tsrun": "^1.2.8", "@gitzone/tsrun": "^1.2.37",
"@gitzone/tstest": "^1.0.28", "@gitzone/tstest": "^1.0.71",
"@pushrocks/tapbundle": "^3.2.0", "@pushrocks/tapbundle": "^5.0.3",
"@types/node": "^13.5.3", "@types/node": "^18.0.0",
"tslint": "^6.0.0", "tslint": "^6.0.0",
"tslint-config-prettier": "^1.18.0" "tslint-config-prettier": "^1.18.0"
}, },
"dependencies": { "dependencies": {
"@pushrocks/lik": "^3.0.13", "@pushrocks/lik": "^6.0.0",
"@pushrocks/smartfile": "^7.0.6", "@pushrocks/smartfile": "^10.0.2",
"@pushrocks/smartfm": "^2.0.4", "@pushrocks/smartfm": "^2.0.4",
"@pushrocks/smarthbs": "^2.0.8", "@pushrocks/smarthbs": "^2.0.8",
"@pushrocks/smartinteract": "^2.0.4", "@pushrocks/smartinteract": "^2.0.11",
"@pushrocks/smartparam": "^1.1.3", "@pushrocks/smartparam": "^1.1.6",
"@pushrocks/smartpromise": "^3.0.6", "@pushrocks/smartpromise": "^3.1.7",
"@pushrocks/smartshell": "^2.0.25", "@pushrocks/smartshell": "^2.0.30",
"@pushrocks/smartyaml": "^2.0.3" "@pushrocks/smartyaml": "^2.0.5"
}, },
"files": [ "files": [
"ts/**/*", "ts/**/*",
"ts_web/**/*", "ts_web/**/*",
"dist/**/*", "dist/**/*",
"dist_web/**/*", "dist_*/**/*",
"dist_ts/**/*",
"dist_ts_web/**/*", "dist_ts_web/**/*",
"assets/**/*", "assets/**/*",
"cli.js", "cli.js",
"npmextra.json", "npmextra.json",
"readme.md" "readme.md"
],
"type": "module",
"browserslist": [
"last 1 chrome versions"
] ]
} }

View File

@ -8,13 +8,20 @@ scaffold projects quickly
* [docs (typedoc)](https://pushrocks.gitlab.io/smartscaf/) * [docs (typedoc)](https://pushrocks.gitlab.io/smartscaf/)
## Status for master ## Status for master
[![pipeline status](https://gitlab.com/pushrocks/smartscaf/badges/master/pipeline.svg)](https://gitlab.com/pushrocks/smartscaf/commits/master)
[![coverage report](https://gitlab.com/pushrocks/smartscaf/badges/master/coverage.svg)](https://gitlab.com/pushrocks/smartscaf/commits/master) Status Category | Status Badge
[![npm downloads per month](https://img.shields.io/npm/dm/@pushrocks/smartscaf.svg)](https://www.npmjs.com/package/@pushrocks/smartscaf) -- | --
[![Known Vulnerabilities](https://snyk.io/test/npm/@pushrocks/smartscaf/badge.svg)](https://snyk.io/test/npm/@pushrocks/smartscaf) GitLab Pipelines | [![pipeline status](https://gitlab.com/pushrocks/smartscaf/badges/master/pipeline.svg)](https://lossless.cloud)
[![TypeScript](https://img.shields.io/badge/TypeScript->=%203.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/) GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/pushrocks/smartscaf/badges/master/coverage.svg)](https://lossless.cloud)
[![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/) npm | [![npm downloads per month](https://badgen.net/npm/dy/@pushrocks/smartscaf)](https://lossless.cloud)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-prettier-ff69b4.svg)](https://prettier.io/) Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/pushrocks/smartscaf)](https://lossless.cloud)
TypeScript Support | [![TypeScript](https://badgen.net/badge/TypeScript/>=%203.x/blue?icon=typescript)](https://lossless.cloud)
node Support | [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
Code Style | [![Code Style](https://badgen.net/badge/style/prettier/purple)](https://lossless.cloud)
PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@pushrocks/smartscaf)](https://lossless.cloud)
PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@pushrocks/smartscaf)](https://lossless.cloud)
BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@pushrocks/smartscaf)](https://lossless.cloud)
Platform support | [![Supports Windows 10](https://badgen.net/badge/supports%20Windows%2010/yes/green?icon=windows)](https://lossless.cloud) [![Supports Mac OS X](https://badgen.net/badge/supports%20Mac%20OS%20X/yes/green?icon=apple)](https://lossless.cloud)
## Usage ## Usage

View File

@ -1,7 +1,7 @@
import { expect, tap } from '@pushrocks/tapbundle'; import { expect, tap } from '@pushrocks/tapbundle';
import * as path from 'path'; import * as path from 'path';
import * as smartscaf from '../ts/index'; import * as smartscaf from '../ts/index.js';
process.env.CI = 'true'; process.env.CI = 'true';
@ -9,12 +9,12 @@ let testScafTemplate: smartscaf.ScafTemplate;
tap.test('should create new Smartscaf instance', async () => { tap.test('should create new Smartscaf instance', async () => {
testScafTemplate = new smartscaf.ScafTemplate('./test/test_template'); testScafTemplate = new smartscaf.ScafTemplate('./test/test_template');
expect(testScafTemplate).to.be.instanceof(smartscaf.ScafTemplate); expect(testScafTemplate).toBeInstanceOf(smartscaf.ScafTemplate);
}); });
tap.test('Smartscaf instance -> should read a template directory', async () => { tap.test('Smartscaf instance -> should read a template directory', async () => {
await testScafTemplate.readTemplateFromDir(); await testScafTemplate.readTemplateFromDir();
expect(testScafTemplate.templateSmartfileArray.length).to.equal(6); expect(testScafTemplate.templateSmartfileArray.length).toEqual(6);
}); });
tap.test('smartfile -> should accept variables', async () => { tap.test('smartfile -> should accept variables', async () => {

8
ts/00_commitinfo_data.ts Normal file
View File

@ -0,0 +1,8 @@
/**
* autocreated commitinfo by @pushrocks/commitinfo
*/
export const commitinfo = {
name: '@pushrocks/smartscaf',
version: '4.0.0',
description: 'scaffold projects quickly'
}

View File

@ -1 +1 @@
export * from './smartscaf.classes.smartscaf'; export * from './smartscaf.classes.smartscaf.js';

View File

@ -1 +1 @@
export * from './smartscaf'; export * from './smartscaf.js';

View File

@ -1,5 +1,5 @@
import * as plugins from './smartscaf.plugins'; import * as plugins from './smartscaf.plugins.js';
import * as interfaces from './interfaces'; import * as interfaces from './interfaces/index.js';
// interfaces // interfaces
import { Smartfile } from '@pushrocks/smartfile'; import { Smartfile } from '@pushrocks/smartfile';
@ -57,19 +57,21 @@ export class ScafTemplate {
let smartscafFile: interfaces.ISmartscafFile = { let smartscafFile: interfaces.ISmartscafFile = {
defaults: {}, defaults: {},
dependencies: { dependencies: {
merge: [] merge: [],
}, },
runafter: [] runafter: [],
}; };
const smartscafSmartfile = this.templateSmartfileArray.find(smartfileArg => { const smartscafSmartfile = this.templateSmartfileArray.find((smartfileArg) => {
return smartfileArg.parsedPath.base === '.smartscaf.yml'; return smartfileArg.parsedPath.base === '.smartscaf.yml';
}); });
if (smartscafSmartfile) { if (smartscafSmartfile) {
smartscafFile = { smartscafFile = {
...smartscafFile, ...smartscafFile,
...(await plugins.smartyaml.yamlStringToObject(smartscafSmartfile.contentBuffer.toString())) ...(await plugins.smartyaml.yamlStringToObject(
smartscafSmartfile.contentBuffer.toString()
)),
}; };
} }
this.smartscafFile = smartscafFile; this.smartscafFile = smartscafFile;
@ -87,7 +89,7 @@ export class ScafTemplate {
public async supplyVariables(variablesArg) { public async supplyVariables(variablesArg) {
this.suppliedVariables = { this.suppliedVariables = {
...this.suppliedVariables, ...this.suppliedVariables,
...variablesArg ...variablesArg,
}; };
this.missingVariables = await this._checkSuppliedVariables(); this.missingVariables = await this._checkSuppliedVariables();
} }
@ -110,14 +112,15 @@ export class ScafTemplate {
return 'undefined variable'; return 'undefined variable';
} }
})(), })(),
message: `What is the value of ${missingVariable}?` message: `What is the value of ${missingVariable}?`,
} },
]); ]);
} }
const answerBucket = await localSmartInteract.runQueue(); const answerBucket = await localSmartInteract.runQueue();
await answerBucket.answerMap.forEach(async answer => { const answers = answerBucket.getAllAnswers();
for (const answer of answers) {
await plugins.smartparam.smartAdd(this.suppliedVariables, answer.name, answer.value); await plugins.smartparam.smartAdd(this.suppliedVariables, answer.name, answer.value);
}); }
} }
/** /**
@ -139,7 +142,7 @@ export class ScafTemplate {
// handle frontmatter // handle frontmatter
const smartfmInstance = new plugins.smartfm.Smartfm({ const smartfmInstance = new plugins.smartfm.Smartfm({
fmType: 'yaml' fmType: 'yaml',
}); });
const parsedTemplate = smartfmInstance.parse(renderedTemplateString) as any; const parsedTemplate = smartfmInstance.parse(renderedTemplateString) as any;
if (parsedTemplate.data.fileName) { if (parsedTemplate.data.fileName) {
@ -206,7 +209,7 @@ export class ScafTemplate {
* >> - yourDeeperKey: yourValue * >> - yourDeeperKey: yourValue
*/ */
private async _checkDefaultVariables() { private async _checkDefaultVariables() {
const smartscafSmartfile = this.templateSmartfileArray.find(smartfileArg => { const smartscafSmartfile = this.templateSmartfileArray.find((smartfileArg) => {
return smartfileArg.parsedPath.base === '.smartscaf.yml'; return smartfileArg.parsedPath.base === '.smartscaf.yml';
}); });
@ -252,7 +255,7 @@ export class ScafTemplate {
throw new Error('cannot run scripts without an destinationdir'); throw new Error('cannot run scripts without an destinationdir');
} }
const smartshellInstance = new plugins.smartshell.Smartshell({ const smartshellInstance = new plugins.smartshell.Smartshell({
executor: 'bash' executor: 'bash',
}); });
for (const command of this.smartscafFile.runafter) { for (const command of this.smartscafFile.runafter) {
await smartshellInstance.exec(`cd ${this.destinationPath} && ${command}`); await smartshellInstance.exec(`cd ${this.destinationPath} && ${command}`);

View File

@ -19,5 +19,5 @@ export {
smartparam, smartparam,
smartpromise, smartpromise,
smartyaml, smartyaml,
smartshell smartshell,
}; };

9
tsconfig.json Normal file
View File

@ -0,0 +1,9 @@
{
"compilerOptions": {
"experimentalDecorators": true,
"useDefineForClassFields": false,
"target": "ES2022",
"module": "ES2022",
"moduleResolution": "nodenext"
}
}

View File

@ -1,17 +0,0 @@
{
"extends": ["tslint:latest", "tslint-config-prettier"],
"rules": {
"semicolon": [true, "always"],
"no-console": false,
"ordered-imports": false,
"object-literal-sort-keys": false,
"member-ordering": {
"options":{
"order": [
"static-method"
]
}
}
},
"defaultSeverity": "warning"
}