New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@markuplint/create-rule-helper

Package Overview
Dependencies
Maintainers
1
Versions
108
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@markuplint/create-rule-helper - npm Package Compare versions

Comparing version 1.0.0-dev.20211227.0 to 1.0.0-dev.20220105.1

lib/create-rule-package.d.ts

6

lib/create-rule-helper.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createRuleHelper = void 0;
const create_rule_package_1 = require("./create-rule-package");
const create_rule_to_core_1 = require("./create-rule-to-core");
const create_rule_to_project_1 = require("./create-rule-to-project");
async function createRuleHelper(params) {
switch (params.purpose) {
case 'ADD_TO_PROJECT': {
throw new Error('Not implemented yet');
return await (0, create_rule_to_project_1.craeteRuleToProject)(params);
}
case 'PUBLISH_AS_PACKAGE': {
throw new Error('Not implemented yet');
return await (0, create_rule_package_1.craeteRulePackage)(params);
}

@@ -13,0 +15,0 @@ case 'CONTRIBUTE_TO_CORE': {

@@ -14,3 +14,7 @@ "use strict";

const newRuleDir = path_1.default.resolve(rulesDir, name);
return await (0, install_scaffold_1.installScaffold)(newRuleDir, { name, lang, needTest });
const exists = await (0, fs_exists_1.fsExists)(newRuleDir);
if (exists) {
throw new create_rule_helper_error_1.CreateRuleHelperError(`A new rule "${name}" already exists`);
}
return await (0, install_scaffold_1.installScaffold)('core', newRuleDir, '', { name, lang, needTest });
}

@@ -17,0 +21,0 @@ exports.craeteRuleToCore = craeteRuleToCore;

import type { CreateRuleCreatorParams, CreateRuleHelperResult } from './types';
export declare function installScaffold(dir: string, params: CreateRuleCreatorParams): Promise<CreateRuleHelperResult>;
export declare function installScaffold(scaffoldDir: string, dest: string, sourceDir: string, params: CreateRuleCreatorParams & {
packageJson?: boolean;
}): Promise<CreateRuleHelperResult>;

@@ -7,18 +7,98 @@ "use strict";

const path_1 = (0, tslib_1.__importDefault)(require("path"));
const create_rule_helper_error_1 = require("./create-rule-helper-error");
const fs_exists_1 = require("./fs-exists");
const transfer_1 = require("./transfer");
const SCAFFOLD_README_FILE = path_1.default.resolve(__dirname, '..', 'scaffold', 'README.md');
const SCAFFOLD_MAIN_FILE = path_1.default.resolve(__dirname, '..', 'scaffold', 'index.ts');
const SCAFFOLD_TEST_FILE = path_1.default.resolve(__dirname, '..', 'scaffold', 'index.spec.ts');
async function installScaffold(dir, params) {
const exists = await (0, fs_exists_1.fsExists)(dir);
if (exists) {
throw new create_rule_helper_error_1.CreateRuleHelperError(`A new rule "${params.name}" already exists`);
async function installScaffold(scaffoldDir, dest, sourceDir, params) {
const exists = await (0, fs_exists_1.fsExists)(dest);
if (!exists) {
await fs_1.promises.mkdir(dest);
}
await fs_1.promises.mkdir(dir);
const scaffoldReadmeFile = path_1.default.resolve(__dirname, '..', 'scaffold', scaffoldDir, 'README.md');
const scaffoldMainFile = path_1.default.resolve(__dirname, '..', 'scaffold', scaffoldDir, 'index.ts');
const scaffoldTestFile = path_1.default.resolve(__dirname, '..', 'scaffold', scaffoldDir, 'index.spec.ts');
const transpile = params.lang === 'JAVASCRIPT';
const readme = await (0, transfer_1.transfer)(SCAFFOLD_README_FILE, dir, { name: params.name });
const main = await (0, transfer_1.transfer)(SCAFFOLD_MAIN_FILE, dir, { name: params.name }, { transpile });
const test = params.needTest ? await (0, transfer_1.transfer)(SCAFFOLD_TEST_FILE, dir, { name: params.name }, { transpile }) : null;
const readme = await (0, transfer_1.transfer)(scaffoldReadmeFile, dest, { name: params.name });
const main = await (0, transfer_1.transfer)(scaffoldMainFile, path_1.default.resolve(dest, sourceDir), { name: params.name }, { transpile });
const test = params.needTest
? await (0, transfer_1.transfer)(scaffoldTestFile, path_1.default.resolve(dest, sourceDir), { name: params.name }, { transpile })
: null;
const packageJson = params.packageJson ? path_1.default.resolve(dest, 'package.json') : null;
const dependencies = [];
const devDependencies = [];
const tsConfig = params.packageJson && params.lang === 'TYPESCRIPT' ? path_1.default.resolve(dest, 'tsconfig.json') : null;
const ext = params.lang === 'JAVASCRIPT' ? 'js' : 'ts';
if (packageJson) {
const packageContent = {
name: params.name,
scripts: {},
jest: {
moduleFileExtensions: ['js', ...(params.lang === 'TYPESCRIPT' ? ['ts'] : [])],
testRegex: `(\\.|/)(spec|test)\\.${ext}$`,
testEnvironment: 'node',
transform: params.lang === 'TYPESCRIPT'
? {
'^.+\\.ts$': 'ts-jest',
}
: undefined,
},
babel: params.needTest && params.lang === 'JAVASCRIPT'
? {
presets: [
[
'@babel/preset-env',
{
targets: {
node: 'current',
},
},
],
],
}
: undefined,
};
if (params.lang === 'TYPESCRIPT') {
packageContent.scripts.build = 'tsc';
}
dependencies.push('@markuplint/ml-core@next');
devDependencies.push('markuplint@next');
if (params.needTest) {
packageContent.scripts.test = 'jest';
devDependencies.push('jest');
if (params.lang === 'TYPESCRIPT') {
devDependencies.push('@types/jest');
devDependencies.push('ts-jest');
}
else {
devDependencies.push('babel-jest');
devDependencies.push('@babel/core');
devDependencies.push('@babel/preset-env');
}
}
if (params.lang === 'TYPESCRIPT') {
devDependencies.push('typescript');
}
await fs_1.promises.writeFile(packageJson, JSON.stringify(packageContent, null, 2), { encoding: 'utf-8' });
}
if (tsConfig) {
const config = {
compilerOptions: {
module: 'commonjs',
target: 'es2019',
strict: true,
strictNullChecks: true,
strictPropertyInitialization: true,
allowSyntheticDefaultImports: true,
experimentalDecorators: true,
esModuleInterop: true,
noImplicitAny: true,
declaration: true,
lib: ['dom', 'es2015', 'es2016', 'es2017', 'es2018', 'es2019', 'esnext'],
skipLibCheck: true,
outDir: './lib',
rootDir: './src',
},
include: ['./src/**/*'],
exclude: ['node_modules', 'lib', './src/**/*.spec.ts'],
};
await fs_1.promises.writeFile(tsConfig, JSON.stringify(config, null, 2), { encoding: 'utf-8' });
}
return {

@@ -29,4 +109,8 @@ ...params,

test,
packageJson,
tsConfig,
dependencies,
devDependencies,
};
}
exports.installScaffold = installScaffold;

@@ -10,2 +10,3 @@ "use strict";

const typescript_1 = require("typescript");
const fs_exists_1 = require("./fs-exists");
async function transfer(filePath, destDir, replacer, options) {

@@ -30,2 +31,5 @@ const extname = path_1.default.extname(filePath);

converted = (0, prettier_1.format)(converted, { parser });
if (!(await (0, fs_exists_1.fsExists)(destDir))) {
await fs_1.promises.mkdir(destDir, { recursive: true });
}
const dest = path_1.default.resolve(destDir, fileName);

@@ -32,0 +36,0 @@ await fs_1.promises.writeFile(dest, converted, { encoding: 'utf-8' });

@@ -13,4 +13,8 @@ export declare type CreateRuleHelperParams = CreateRuleCreatorParams & {

test: string | null;
packageJson: string | null;
tsConfig: string | null;
dependencies: string[];
devDependencies: string[];
};
export declare type CreateRuleLanguage = 'JAVASCRIPT' | 'TYPESCRIPT';
export declare type CreateRulePurpose = 'ADD_TO_PROJECT' | 'PUBLISH_AS_PACKAGE' | 'CONTRIBUTE_TO_CORE';
{
"name": "@markuplint/create-rule-helper",
"version": "1.0.0-dev.20211227.0",
"version": "1.0.0-dev.20220105.1",
"description": "Create rule helper",

@@ -20,3 +20,4 @@ "repository": "git@github.com:markuplint/markuplint.git",

"dependencies": {
"@markuplint/ml-core": "2.0.0-dev.20211227.0",
"@markuplint/ml-core": "2.0.0-dev.20220105.1",
"glob": "^7.2.0",
"mustache": "^4.2.0",

@@ -31,3 +32,3 @@ "prettier": "^2.4.1",

},
"gitHead": "20dec43c2303645a8c49cc409900a67cc9ce2a9d"
"gitHead": "73fab2765c080b0a42e71bdc1eed09bae0ed360e"
}

@@ -52,7 +52,7 @@ import { createRule } from '@markuplint/ml-core';

*/
async verify(context) {
async verify({ document, report, t }) {
/**
* Example: Use `walk` method to traverse the node tree
*/
context.document.walk(node => {
document.walk(node => {
/**

@@ -79,3 +79,3 @@ * Example: Compare the type of the node to filter it

*/
context.report({
report({
/**

@@ -95,3 +95,3 @@ * Example: Define the scope.

*/
message: context.t('It is {0}', 'TODO'),
message: t('It is {0}', 'TODO'),
});

@@ -98,0 +98,0 @@ }

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc