hightjs 0.2.43 → 0.2.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -562
- package/dist/bin/hightjs.js +393 -0
- package/dist/index.js +2 -0
- package/dist/renderer.js +2 -1
- package/dist/router.js +0 -1
- package/docs/README.md +59 -0
- package/docs/adapters.md +7 -0
- package/docs/arquivos-especiais.md +10 -0
- package/docs/autenticacao.md +212 -0
- package/docs/checklist.md +9 -0
- package/docs/cli.md +21 -0
- package/docs/estrutura.md +20 -0
- package/docs/faq.md +10 -0
- package/docs/hot-reload.md +5 -0
- package/docs/middlewares.md +73 -0
- package/docs/rotas-backend.md +45 -0
- package/docs/rotas-frontend.md +66 -0
- package/docs/seguranca.md +8 -0
- package/docs/websocket.md +45 -0
- package/package.json +1 -1
- package/src/bin/hightjs.js +475 -0
- package/src/index.ts +2 -0
- package/src/renderer.tsx +2 -1
- package/src/router.ts +0 -1
- package/dist/adapters/starters/express.d.ts +0 -0
- package/dist/adapters/starters/express.js +0 -1
- package/dist/adapters/starters/factory.d.ts +0 -0
- package/dist/adapters/starters/factory.js +0 -1
- package/dist/adapters/starters/fastify.d.ts +0 -0
- package/dist/adapters/starters/fastify.js +0 -1
- package/dist/adapters/starters/index.d.ts +0 -0
- package/dist/adapters/starters/index.js +0 -1
- package/dist/adapters/starters/native.d.ts +0 -0
- package/dist/adapters/starters/native.js +0 -1
- package/dist/auth/example.d.ts +0 -40
- package/dist/auth/example.js +0 -104
- package/dist/client/ErrorBoundary.d.ts +0 -16
- package/dist/client/ErrorBoundary.js +0 -181
- package/dist/client/routerContext.d.ts +0 -26
- package/dist/client/routerContext.js +0 -62
- package/dist/eslint/index.d.ts +0 -32
- package/dist/eslint/index.js +0 -15
- package/dist/eslint/use-client-rule.d.ts +0 -19
- package/dist/eslint/use-client-rule.js +0 -99
- package/dist/eslintSetup.d.ts +0 -0
- package/dist/eslintSetup.js +0 -1
- package/dist/example/src/web/routes/index.d.ts +0 -3
- package/dist/example/src/web/routes/index.js +0 -15
- package/dist/hightweb-global.d.ts +0 -0
- package/dist/hightweb-global.js +0 -1
- package/dist/ssl/selfSigned.d.ts +0 -0
- package/dist/ssl/selfSigned.js +0 -1
- package/dist/types/websocket.d.ts +0 -27
- package/dist/types/websocket.js +0 -2
- package/dist/typescript/use-client-plugin.d.ts +0 -5
- package/dist/typescript/use-client-plugin.js +0 -113
- package/dist/validation.d.ts +0 -0
- package/dist/validation.js +0 -1
- package/src/hightweb-global.ts +0 -1
- package/src/ssl/selfSigned.ts +0 -2
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* TypeScript Plugin: require-use-client
|
|
4
|
-
* Integra a validação "use client" diretamente no TypeScript
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.default = createPlugin;
|
|
8
|
-
const defaultConfig = {
|
|
9
|
-
enabled: true,
|
|
10
|
-
severity: 'error'
|
|
11
|
-
};
|
|
12
|
-
function isReactImport(node) {
|
|
13
|
-
if (!node.moduleSpecifier || node.moduleSpecifier.kind !== 10) { // StringLiteral = 10
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
const moduleName = node.moduleSpecifier.text;
|
|
17
|
-
return moduleName === 'react' || moduleName === 'react/jsx-runtime';
|
|
18
|
-
}
|
|
19
|
-
function hasReactHooks(node) {
|
|
20
|
-
if (!isReactImport(node) || !node.importClause) {
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
const reactHooks = [
|
|
24
|
-
'useState', 'useEffect', 'useContext', 'useReducer',
|
|
25
|
-
'useCallback', 'useMemo', 'useRef', 'useImperativeHandle',
|
|
26
|
-
'useLayoutEffect', 'useDebugValue', 'useDeferredValue',
|
|
27
|
-
'useTransition', 'useId', 'useSyncExternalStore',
|
|
28
|
-
'useInsertionEffect'
|
|
29
|
-
];
|
|
30
|
-
if (node.importClause.namedBindings && node.importClause.namedBindings.kind === 271) { // NamedImports = 271
|
|
31
|
-
return node.importClause.namedBindings.elements.some((element) => reactHooks.includes(element.name.text));
|
|
32
|
-
}
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
function hasUseClientDirective(sourceFile) {
|
|
36
|
-
// Verifica se a primeira statement é uma expressão "use client"
|
|
37
|
-
if (sourceFile.statements.length === 0)
|
|
38
|
-
return false;
|
|
39
|
-
const firstStatement = sourceFile.statements[0];
|
|
40
|
-
if (firstStatement.kind === 233 && // ExpressionStatement = 233
|
|
41
|
-
firstStatement.expression.kind === 10) { // StringLiteral = 10
|
|
42
|
-
const value = firstStatement.expression.text;
|
|
43
|
-
return value === 'use client';
|
|
44
|
-
}
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
function isBackendFile(fileName) {
|
|
48
|
-
// Verifica se o arquivo está no diretório backend
|
|
49
|
-
return fileName.includes('/backend/') || fileName.includes('\\backend\\');
|
|
50
|
-
}
|
|
51
|
-
function isFrontendFile(fileName) {
|
|
52
|
-
// Verifica se é um arquivo frontend (não backend e dentro de src/web)
|
|
53
|
-
const isInWebDir = fileName.includes('/src/web/') || fileName.includes('\\src\\web\\');
|
|
54
|
-
const isNotBackend = !isBackendFile(fileName);
|
|
55
|
-
const isReactFile = fileName.endsWith('.tsx') || fileName.endsWith('.jsx');
|
|
56
|
-
return isInWebDir && isNotBackend && isReactFile;
|
|
57
|
-
}
|
|
58
|
-
function createDiagnostic(sourceFile, severity, start = 0, length = 1) {
|
|
59
|
-
const category = severity === 'error' ? 1 : 0; // Error = 1, Warning = 0
|
|
60
|
-
return {
|
|
61
|
-
file: sourceFile,
|
|
62
|
-
start,
|
|
63
|
-
length,
|
|
64
|
-
messageText: 'Arquivos que importam React ou hooks devem começar com "use client"',
|
|
65
|
-
category,
|
|
66
|
-
code: 9001, // Código customizado para o plugin HightJS
|
|
67
|
-
source: 'hightjs'
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
function createPlugin(info) {
|
|
71
|
-
const config = { ...defaultConfig, ...info.config };
|
|
72
|
-
if (!config.enabled) {
|
|
73
|
-
return info.languageService;
|
|
74
|
-
}
|
|
75
|
-
const proxy = Object.create(null);
|
|
76
|
-
// Proxy todas as funções do language service
|
|
77
|
-
for (let k of Object.keys(info.languageService)) {
|
|
78
|
-
const x = info.languageService[k];
|
|
79
|
-
proxy[k] = (...args) => x.apply(info.languageService, args);
|
|
80
|
-
}
|
|
81
|
-
// Sobrescreve getSemanticDiagnostics para adicionar nossa validação
|
|
82
|
-
proxy.getSemanticDiagnostics = (fileName) => {
|
|
83
|
-
const originalDiagnostics = info.languageService.getSemanticDiagnostics(fileName);
|
|
84
|
-
// Só valida arquivos frontend
|
|
85
|
-
if (!isFrontendFile(fileName)) {
|
|
86
|
-
return originalDiagnostics;
|
|
87
|
-
}
|
|
88
|
-
const sourceFile = info.languageService.getProgram()?.getSourceFile(fileName);
|
|
89
|
-
if (!sourceFile) {
|
|
90
|
-
return originalDiagnostics;
|
|
91
|
-
}
|
|
92
|
-
let hasReactImportOrHooks = false;
|
|
93
|
-
// Verifica se há imports do React ou hooks
|
|
94
|
-
function visitNode(node) {
|
|
95
|
-
if (node.kind === 270) { // ImportDeclaration = 270
|
|
96
|
-
if (isReactImport(node) || hasReactHooks(node)) {
|
|
97
|
-
hasReactImportOrHooks = true;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
node.forEachChild?.(visitNode);
|
|
101
|
-
}
|
|
102
|
-
visitNode(sourceFile);
|
|
103
|
-
// Se usa React mas não tem "use client", adiciona diagnóstico
|
|
104
|
-
if (hasReactImportOrHooks && !hasUseClientDirective(sourceFile)) {
|
|
105
|
-
const diagnostic = createDiagnostic(sourceFile, config.severity, 0, 1);
|
|
106
|
-
return [...originalDiagnostics, diagnostic];
|
|
107
|
-
}
|
|
108
|
-
return originalDiagnostics;
|
|
109
|
-
};
|
|
110
|
-
return proxy;
|
|
111
|
-
}
|
|
112
|
-
// Para compatibilidade com diferentes versões do TypeScript
|
|
113
|
-
module.exports = createPlugin;
|
package/dist/validation.d.ts
DELETED
|
File without changes
|
package/dist/validation.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|
package/src/hightweb-global.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|
package/src/ssl/selfSigned.ts
DELETED