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.
Files changed (60) hide show
  1. package/README.md +22 -562
  2. package/dist/bin/hightjs.js +393 -0
  3. package/dist/index.js +2 -0
  4. package/dist/renderer.js +2 -1
  5. package/dist/router.js +0 -1
  6. package/docs/README.md +59 -0
  7. package/docs/adapters.md +7 -0
  8. package/docs/arquivos-especiais.md +10 -0
  9. package/docs/autenticacao.md +212 -0
  10. package/docs/checklist.md +9 -0
  11. package/docs/cli.md +21 -0
  12. package/docs/estrutura.md +20 -0
  13. package/docs/faq.md +10 -0
  14. package/docs/hot-reload.md +5 -0
  15. package/docs/middlewares.md +73 -0
  16. package/docs/rotas-backend.md +45 -0
  17. package/docs/rotas-frontend.md +66 -0
  18. package/docs/seguranca.md +8 -0
  19. package/docs/websocket.md +45 -0
  20. package/package.json +1 -1
  21. package/src/bin/hightjs.js +475 -0
  22. package/src/index.ts +2 -0
  23. package/src/renderer.tsx +2 -1
  24. package/src/router.ts +0 -1
  25. package/dist/adapters/starters/express.d.ts +0 -0
  26. package/dist/adapters/starters/express.js +0 -1
  27. package/dist/adapters/starters/factory.d.ts +0 -0
  28. package/dist/adapters/starters/factory.js +0 -1
  29. package/dist/adapters/starters/fastify.d.ts +0 -0
  30. package/dist/adapters/starters/fastify.js +0 -1
  31. package/dist/adapters/starters/index.d.ts +0 -0
  32. package/dist/adapters/starters/index.js +0 -1
  33. package/dist/adapters/starters/native.d.ts +0 -0
  34. package/dist/adapters/starters/native.js +0 -1
  35. package/dist/auth/example.d.ts +0 -40
  36. package/dist/auth/example.js +0 -104
  37. package/dist/client/ErrorBoundary.d.ts +0 -16
  38. package/dist/client/ErrorBoundary.js +0 -181
  39. package/dist/client/routerContext.d.ts +0 -26
  40. package/dist/client/routerContext.js +0 -62
  41. package/dist/eslint/index.d.ts +0 -32
  42. package/dist/eslint/index.js +0 -15
  43. package/dist/eslint/use-client-rule.d.ts +0 -19
  44. package/dist/eslint/use-client-rule.js +0 -99
  45. package/dist/eslintSetup.d.ts +0 -0
  46. package/dist/eslintSetup.js +0 -1
  47. package/dist/example/src/web/routes/index.d.ts +0 -3
  48. package/dist/example/src/web/routes/index.js +0 -15
  49. package/dist/hightweb-global.d.ts +0 -0
  50. package/dist/hightweb-global.js +0 -1
  51. package/dist/ssl/selfSigned.d.ts +0 -0
  52. package/dist/ssl/selfSigned.js +0 -1
  53. package/dist/types/websocket.d.ts +0 -27
  54. package/dist/types/websocket.js +0 -2
  55. package/dist/typescript/use-client-plugin.d.ts +0 -5
  56. package/dist/typescript/use-client-plugin.js +0 -113
  57. package/dist/validation.d.ts +0 -0
  58. package/dist/validation.js +0 -1
  59. package/src/hightweb-global.ts +0 -1
  60. 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;
File without changes
@@ -1 +0,0 @@
1
- "use strict";
@@ -1 +0,0 @@
1
-
@@ -1,2 +0,0 @@
1
-
2
-