@t4h.framework/cli 0.0.0-experimental-c0d4325

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 (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/bin/bin.js +57 -0
  4. package/dist/bin/bin.js.map +1 -0
  5. package/dist/commands/build/build.js +49 -0
  6. package/dist/commands/build/build.js.map +1 -0
  7. package/dist/commands/dev/dev.js +109 -0
  8. package/dist/commands/dev/dev.js.map +1 -0
  9. package/dist/commands/dev-server-up-app-process.js +84 -0
  10. package/dist/commands/dev-server-up-app-process.js.map +1 -0
  11. package/dist/commands/publish/publish.js +149 -0
  12. package/dist/commands/publish/publish.js.map +1 -0
  13. package/dist/models/CliFileSystemClaim.js +30 -0
  14. package/dist/models/CliFileSystemClaim.js.map +1 -0
  15. package/dist/models/CliHttpClientRequestClaim.js +21 -0
  16. package/dist/models/CliHttpClientRequestClaim.js.map +1 -0
  17. package/dist/models/CliORMClaim.js +37 -0
  18. package/dist/models/CliORMClaim.js.map +1 -0
  19. package/dist/models/DevServer.js +77 -0
  20. package/dist/models/DevServer.js.map +1 -0
  21. package/dist/models/DevServerFileBinary.js +27 -0
  22. package/dist/models/DevServerFileBinary.js.map +1 -0
  23. package/dist/models/DevServerFileSystemClaim.js +30 -0
  24. package/dist/models/DevServerFileSystemClaim.js.map +1 -0
  25. package/dist/models/DevServerHttpClientRequestClaim.js +21 -0
  26. package/dist/models/DevServerHttpClientRequestClaim.js.map +1 -0
  27. package/dist/models/DevServerORMClaim.js +37 -0
  28. package/dist/models/DevServerORMClaim.js.map +1 -0
  29. package/dist/models/DevServerSmtpSendEmailClaim.js +32 -0
  30. package/dist/models/DevServerSmtpSendEmailClaim.js.map +1 -0
  31. package/dist/models/FileBinary.js +28 -0
  32. package/dist/models/FileBinary.js.map +1 -0
  33. package/dist/models/InMemoryDatabase.js +86 -0
  34. package/dist/models/InMemoryDatabase.js.map +1 -0
  35. package/dist/models/JSONCodec.js +110 -0
  36. package/dist/models/JSONCodec.js.map +1 -0
  37. package/dist/models/JSONCodecKindFrameworkSerializableClass.js +7 -0
  38. package/dist/models/JSONCodecKindFrameworkSerializableClass.js.map +1 -0
  39. package/dist/models/JSONRPCClient.js +50 -0
  40. package/dist/models/JSONRPCClient.js.map +1 -0
  41. package/dist/models/JSONRPCServer.js +61 -0
  42. package/dist/models/JSONRPCServer.js.map +1 -0
  43. package/dist/models/__tests__/DevServerFileBinary.spec.js +44 -0
  44. package/dist/models/__tests__/DevServerFileBinary.spec.js.map +1 -0
  45. package/dist/models/__tests__/InMemoryDatabase.spec.js +189 -0
  46. package/dist/models/__tests__/InMemoryDatabase.spec.js.map +1 -0
  47. package/dist/models/__tests__/JSONCodec.spec.js +135 -0
  48. package/dist/models/__tests__/JSONCodec.spec.js.map +1 -0
  49. package/dist/models/__tests__/JSONCodecKindFrameworkSerializableClass.spec.js +51 -0
  50. package/dist/models/__tests__/JSONCodecKindFrameworkSerializableClass.spec.js.map +1 -0
  51. package/dist/models/__tests__/JSONRPCClient.spec.js +133 -0
  52. package/dist/models/__tests__/JSONRPCClient.spec.js.map +1 -0
  53. package/dist/models/__tests__/JSONRPCServer.spec.js +160 -0
  54. package/dist/models/__tests__/JSONRPCServer.spec.js.map +1 -0
  55. package/dist/tools/__tests__/up-app.spec.js +24 -0
  56. package/dist/tools/__tests__/up-app.spec.js.map +1 -0
  57. package/dist/tools/a.js +53 -0
  58. package/dist/tools/a.js.map +1 -0
  59. package/dist/tools/extract-workflow-jsx.js +206 -0
  60. package/dist/tools/extract-workflow-jsx.js.map +1 -0
  61. package/dist/tools/generate-rsc-entries.js +105 -0
  62. package/dist/tools/generate-rsc-entries.js.map +1 -0
  63. package/dist/tools/json-codec.js +17 -0
  64. package/dist/tools/json-codec.js.map +1 -0
  65. package/dist/tools/json-schema-to-inquirer-question.js +33 -0
  66. package/dist/tools/json-schema-to-inquirer-question.js.map +1 -0
  67. package/dist/tools/mkdir-out-dir-project-from-ts-config-path-and-json-package-path.js +11 -0
  68. package/dist/tools/mkdir-out-dir-project-from-ts-config-path-and-json-package-path.js.map +1 -0
  69. package/dist/tools/resolve-package-json-path.js +21 -0
  70. package/dist/tools/resolve-package-json-path.js.map +1 -0
  71. package/dist/tools/resolve-tsconfig-path-from-package-json-path.js +14 -0
  72. package/dist/tools/resolve-tsconfig-path-from-package-json-path.js.map +1 -0
  73. package/dist/tools/test.js +32 -0
  74. package/dist/tools/test.js.map +1 -0
  75. package/dist/tools/ts-build-watch.js +46 -0
  76. package/dist/tools/ts-build-watch.js.map +1 -0
  77. package/dist/tools/ts-build.js +37 -0
  78. package/dist/tools/ts-build.js.map +1 -0
  79. package/dist/tools/up-app.js +10 -0
  80. package/dist/tools/up-app.js.map +1 -0
  81. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema-to-inquirer-question.js","sourceRoot":"","sources":["../../src/tools/json-schema-to-inquirer-question.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAQjD,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,MAAkB,EAClB,UAA+C,EAAE;IAEjD,IAAI,OAAO,MAAM,KAAK,SAAS;QAAE,OAAM;IAEvC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC1B,OAAO,kCAAkC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE5D,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC1B,OAAO,kCAAkC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE5D,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC1B,OAAO,kCAAkC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,MAAoC,EACpC,OAA4C;IAE5C,MAAM,MAAM,GAA4B,EAAE,CAAA;IAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;QACtE,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAA;QAEjD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,4BAA4B,CAAC,QAAQ,EAAE;YACzD,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG;YAChD,UAAU,EAAE,CAAC,UAAU;SACxB,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,MAAoC,EACpC,OAA4C;IAE5C,OAAO,KAAK,CAAC;QACX,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE;KACxH,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,MAAoC,EACpC,OAA4C;IAE5C,OAAO,MAAM,CAAC;QACZ,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE;KACxH,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import crypto from 'node:crypto';
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ export async function mkdirOutDirProjectFromTsConfigPathAndJsonPackagePath(tsConfigPath, packageJsonPath) {
5
+ const outDir = path.join(tsConfigPath, '..', '.temp', crypto.randomBytes(16).toString('base64url'));
6
+ process.send?.(JSON.stringify({ type: 'outDir', data: outDir }));
7
+ await fs.promises.mkdir(outDir, { recursive: true });
8
+ await fs.promises.copyFile(packageJsonPath, path.join(outDir, 'package.json'));
9
+ return outDir;
10
+ }
11
+ //# sourceMappingURL=mkdir-out-dir-project-from-ts-config-path-and-json-package-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mkdir-out-dir-project-from-ts-config-path-and-json-package-path.js","sourceRoot":"","sources":["../../src/tools/mkdir-out-dir-project-from-ts-config-path-and-json-package-path.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,MAAM,CAAC,KAAK,UAAU,oDAAoD,CACxE,YAAoB,EACpB,eAAuB;IAEvB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CACtB,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAC7C,CAAA;IAED,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IAEhE,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAEpD,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;IAE9E,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,21 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ export async function resolvePackageJsonPath(entrypoint) {
4
+ const resolvedEntrypoint = path.resolve(entrypoint);
5
+ const entrypointStats = await fs.promises.stat(resolvedEntrypoint);
6
+ let entrypointPackageJsonPath;
7
+ if (entrypointStats.isDirectory())
8
+ entrypointPackageJsonPath = path.join(resolvedEntrypoint, 'package.json');
9
+ else if (entrypointStats.isFile())
10
+ entrypointPackageJsonPath = resolvedEntrypoint;
11
+ else
12
+ throw new Error(`Entrypoint is not a file or directory: ${resolvedEntrypoint}`);
13
+ try {
14
+ await fs.promises.access(entrypointPackageJsonPath, fs.constants.F_OK);
15
+ }
16
+ catch (error) {
17
+ throw new Error(`Entrypoint package json not found: ${entrypointPackageJsonPath}`, { cause: error });
18
+ }
19
+ return entrypointPackageJsonPath;
20
+ }
21
+ //# sourceMappingURL=resolve-package-json-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-package-json-path.js","sourceRoot":"","sources":["../../src/tools/resolve-package-json-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,UAAkB;IAC7D,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACnD,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAClE,IAAI,yBAAiC,CAAA;IAErC,IAAI,eAAe,CAAC,WAAW,EAAE;QAC/B,yBAAyB,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAA;SACtE,IAAI,eAAe,CAAC,MAAM,EAAE;QAC/B,yBAAyB,GAAG,kBAAkB,CAAA;;QAE9C,MAAM,IAAI,KAAK,CACb,0CAA0C,kBAAkB,EAAE,CAC/D,CAAA;IAEH,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,yBAAyB,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACxE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,sCAAsC,yBAAyB,EAAE,EACjE,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAA;IACH,CAAC;IAED,OAAO,yBAAyB,CAAA;AAClC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ export async function resolveTsconfigFromPackageJsonPath(packageJsonPath) {
4
+ const entrypointPackageJsonParsedPath = path.parse(packageJsonPath);
5
+ const entrypointTsConfigPath = path.join(entrypointPackageJsonParsedPath.dir, 'tsconfig.json');
6
+ try {
7
+ await fs.promises.access(entrypointTsConfigPath, fs.constants.F_OK);
8
+ }
9
+ catch (error) {
10
+ throw new Error(`Entrypoint tsconfig not found: ${entrypointTsConfigPath}`, { cause: error });
11
+ }
12
+ return entrypointTsConfigPath;
13
+ }
14
+ //# sourceMappingURL=resolve-tsconfig-path-from-package-json-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-tsconfig-path-from-package-json-path.js","sourceRoot":"","sources":["../../src/tools/resolve-tsconfig-path-from-package-json-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,eAAuB;IAEvB,MAAM,+BAA+B,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;IAEnE,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CACtC,+BAA+B,CAAC,GAAG,EACnC,eAAe,CAChB,CAAA;IAED,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,kCAAkC,sBAAsB,EAAE,EAC1D,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAA;IACH,CAAC;IAED,OAAO,sBAAsB,CAAA;AAC/B,CAAC"}
@@ -0,0 +1,32 @@
1
+ import ts from 'typescript';
2
+ export function extractRscJsxTransformer(extracted, makeId) {
3
+ return (ctx) => {
4
+ const visitor = node => {
5
+ // Procura: render(<JSX />)
6
+ if (ts.isCallExpression(node)) {
7
+ const callee = node.expression;
8
+ const isRender = ts.isIdentifier(callee) && callee.text === 'render'; // v1 simples
9
+ if (isRender && node.arguments.length >= 1) {
10
+ const firstArg = node.arguments[0];
11
+ const isJsx = firstArg &&
12
+ (ts.isJsxElement(firstArg) ||
13
+ ts.isJsxSelfClosingElement(firstArg) ||
14
+ ts.isJsxFragment(firstArg));
15
+ if (isJsx) {
16
+ const id = makeId(node.getSourceFile(), extracted.length);
17
+ extracted.push({
18
+ id,
19
+ jsx: firstArg,
20
+ sourceFile: node.getSourceFile(),
21
+ });
22
+ // Troca render(<JSX/>) por renderRsc("id")
23
+ return ts.factory.updateCallExpression(node, ts.factory.createIdentifier('renderRsc'), node.typeArguments, [ts.factory.createStringLiteral(id)]);
24
+ }
25
+ }
26
+ }
27
+ return ts.visitEachChild(node, visitor, ctx);
28
+ };
29
+ return sf => ts.visitNode(sf, visitor);
30
+ };
31
+ }
32
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/tools/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAQ3B,MAAM,UAAU,wBAAwB,CACtC,SAAyB,EACzB,MAAoD;IAEpD,OAAO,CAAC,GAAG,EAAiC,EAAE;QAC5C,MAAM,OAAO,GAAe,IAAI,CAAC,EAAE;YACjC,2BAA2B;YAC3B,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAA;gBAE9B,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAA,CAAC,aAAa;gBAElF,IAAI,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;oBAElC,MAAM,KAAK,GACT,QAAQ;wBACR,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC;4BACxB,EAAE,CAAC,uBAAuB,CAAC,QAAQ,CAAC;4BACpC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;oBAE/B,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;wBACzD,SAAS,CAAC,IAAI,CAAC;4BACb,EAAE;4BACF,GAAG,EAAE,QAAQ;4BACb,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;yBACjC,CAAC,CAAA;wBAEF,2CAA2C;wBAC3C,OAAO,EAAE,CAAC,OAAO,CAAC,oBAAoB,CACpC,IAAI,EACJ,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,EACxC,IAAI,CAAC,aAAa,EAClB,CAAC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CACrC,CAAA;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;QAC9C,CAAC,CAAA;QAED,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAkB,CAAA;IACzD,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,46 @@
1
+ import ts from 'typescript';
2
+ export function tsBuildWatch(tsconfigPath, override = {}, handlers = {}) {
3
+ const reportDiagnostic = (diagnostic) => {
4
+ const text = ts.formatDiagnosticsWithColorAndContext([diagnostic], {
5
+ getCurrentDirectory: ts.sys.getCurrentDirectory,
6
+ getCanonicalFileName: f => f,
7
+ getNewLine: () => ts.sys.newLine,
8
+ });
9
+ handlers.onFail?.(text);
10
+ };
11
+ const reportWatchStatusChanged = (diagnostic) => {
12
+ const text = ts.formatDiagnosticsWithColorAndContext([diagnostic], {
13
+ getCurrentDirectory: ts.sys.getCurrentDirectory,
14
+ getCanonicalFileName: f => f,
15
+ getNewLine: () => ts.sys.newLine,
16
+ });
17
+ handlers.onStatus?.(text);
18
+ };
19
+ const host = ts.createWatchCompilerHost(tsconfigPath, override, ts.sys, ts.createEmitAndSemanticDiagnosticsBuilderProgram, reportDiagnostic, reportWatchStatusChanged);
20
+ const originalAfterProgramCreate = host.afterProgramCreate;
21
+ host.afterProgramCreate = builderProgram => {
22
+ originalAfterProgramCreate?.(builderProgram);
23
+ const program = builderProgram.getProgram();
24
+ const preEmit = ts.getPreEmitDiagnostics(program);
25
+ const formatted = preEmit.length
26
+ ? ts.formatDiagnosticsWithColorAndContext(preEmit, {
27
+ getCurrentDirectory: ts.sys.getCurrentDirectory,
28
+ getCanonicalFileName: f => f,
29
+ getNewLine: () => ts.sys.newLine,
30
+ })
31
+ : '';
32
+ if (preEmit.length === 0) {
33
+ void handlers.onSuccess?.({ outDir: program.getCompilerOptions().outDir });
34
+ }
35
+ else {
36
+ void handlers.onFail?.(formatted);
37
+ }
38
+ };
39
+ const watchProgram = ts.createWatchProgram(host);
40
+ return {
41
+ close() {
42
+ watchProgram.close();
43
+ },
44
+ };
45
+ }
46
+ //# sourceMappingURL=ts-build-watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-build-watch.js","sourceRoot":"","sources":["../../src/tools/ts-build-watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAY3B,MAAM,UAAU,YAAY,CAC1B,YAAoB,EACpB,WAA+B,EAAE,EACjC,WAAiC,EAAE;IAEnC,MAAM,gBAAgB,GAAG,CAAC,UAAyB,EAAE,EAAE;QACrD,MAAM,IAAI,GAAG,EAAE,CAAC,oCAAoC,CAAC,CAAC,UAAU,CAAC,EAAE;YACjE,mBAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,mBAAmB;YAC/C,oBAAoB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5B,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;SACjC,CAAC,CAAA;QACF,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC,CAAA;IAED,MAAM,wBAAwB,GAAG,CAAC,UAAyB,EAAE,EAAE;QAC7D,MAAM,IAAI,GAAG,EAAE,CAAC,oCAAoC,CAAC,CAAC,UAAU,CAAC,EAAE;YACjE,mBAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,mBAAmB;YAC/C,oBAAoB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5B,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;SACjC,CAAC,CAAA;QACF,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,uBAAuB,CACrC,YAAY,EACZ,QAAQ,EACR,EAAE,CAAC,GAAG,EACN,EAAE,CAAC,8CAA8C,EACjD,gBAAgB,EAChB,wBAAwB,CACzB,CAAA;IAED,MAAM,0BAA0B,GAAG,IAAI,CAAC,kBAAkB,CAAA;IAE1D,IAAI,CAAC,kBAAkB,GAAG,cAAc,CAAC,EAAE;QACzC,0BAA0B,EAAE,CAAC,cAAc,CAAC,CAAA;QAE5C,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,EAAE,CAAA;QAE3C,MAAM,OAAO,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAA;QACjD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM;YAC9B,CAAC,CAAC,EAAE,CAAC,oCAAoC,CAAC,OAAO,EAAE;gBAC/C,mBAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,mBAAmB;gBAC/C,oBAAoB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC5B,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;aACjC,CAAC;YACJ,CAAC,CAAC,EAAE,CAAA;QAEN,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,CAAC,CAAA;QAC5E,CAAC;aAAM,CAAC;YACN,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC;IACH,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;IAEhD,OAAO;QACL,KAAK;YACH,YAAY,CAAC,KAAK,EAAE,CAAA;QACtB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,37 @@
1
+ import path from 'node:path';
2
+ import ts from 'typescript';
3
+ export function tsBuild(tsconfigPath, override = {}) {
4
+ const configFile = ts.readConfigFile(tsconfigPath, ts.sys.readFile);
5
+ if (configFile.error) {
6
+ const msg = ts.formatDiagnosticsWithColorAndContext([configFile.error], {
7
+ getCurrentDirectory: ts.sys.getCurrentDirectory,
8
+ getCanonicalFileName: f => f,
9
+ getNewLine: () => ts.sys.newLine,
10
+ });
11
+ return { ok: false, diagnostics: [msg], parsed: null };
12
+ }
13
+ const configDir = path.dirname(tsconfigPath);
14
+ const parsed = ts.parseJsonConfigFileContent(configFile.config, ts.sys, configDir, override, tsconfigPath);
15
+ const program = ts.createProgram({
16
+ rootNames: parsed.fileNames,
17
+ options: parsed.options,
18
+ projectReferences: parsed.projectReferences ?? [],
19
+ });
20
+ const emitResult = program.emit();
21
+ const allDiagnostics = ts
22
+ .getPreEmitDiagnostics(program)
23
+ .concat(emitResult.diagnostics);
24
+ const formatted = allDiagnostics.length
25
+ ? ts.formatDiagnosticsWithColorAndContext(allDiagnostics, {
26
+ getCurrentDirectory: ts.sys.getCurrentDirectory,
27
+ getCanonicalFileName: f => f,
28
+ getNewLine: () => ts.sys.newLine,
29
+ })
30
+ : '';
31
+ return {
32
+ ok: !emitResult.emitSkipped && allDiagnostics.length === 0,
33
+ diagnostics: formatted ? [formatted] : [],
34
+ parsed,
35
+ };
36
+ }
37
+ //# sourceMappingURL=ts-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-build.js","sourceRoot":"","sources":["../../src/tools/ts-build.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,MAAM,UAAU,OAAO,CACrB,YAAoB,EACpB,WAA+B,EAAE;IAEjC,MAAM,UAAU,GAAG,EAAE,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAEnE,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,EAAE,CAAC,oCAAoC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YACtE,mBAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,mBAAmB;YAC/C,oBAAoB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5B,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;SACjC,CAAC,CAAA;QAEF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAW,EAAE,CAAA;IAC/D,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IAE5C,MAAM,MAAM,GAAG,EAAE,CAAC,0BAA0B,CAC1C,UAAU,CAAC,MAAM,EACjB,EAAE,CAAC,GAAG,EACN,SAAS,EACT,QAAQ,EACR,YAAY,CACb,CAAA;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC;QAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,EAAE;KAClD,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IAEjC,MAAM,cAAc,GAAG,EAAE;SACtB,qBAAqB,CAAC,OAAO,CAAC;SAC9B,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IAEjC,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM;QACrC,CAAC,CAAC,EAAE,CAAC,oCAAoC,CAAC,cAAc,EAAE;YACtD,mBAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,mBAAmB;YAC/C,oBAAoB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5B,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;SACjC,CAAC;QACJ,CAAC,CAAC,EAAE,CAAA;IAEN,OAAO;QACL,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAC1D,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QACzC,MAAM;KACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { App } from '@t4h.framework/core';
2
+ export async function upApp(appPath) {
3
+ const module = await import(appPath);
4
+ if ('default' in module && module.default instanceof App)
5
+ return module.default;
6
+ if ('app' in module && module.app instanceof App)
7
+ return module.app;
8
+ throw new Error('App not found');
9
+ }
10
+ //# sourceMappingURL=up-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"up-app.js","sourceRoot":"","sources":["../../src/tools/up-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAEzC,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAe;IACzC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;IAEpC,IAAI,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,YAAY,GAAG;QACtD,OAAO,MAAM,CAAC,OAAO,CAAA;IAEvB,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,YAAY,GAAG;QAAE,OAAO,MAAM,CAAC,GAAG,CAAA;IAEnE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;AAClC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@t4h.framework/cli",
3
+ "version": "0.0.0-experimental-c0d4325",
4
+ "description": "CLI tools for the T4H Framework",
5
+ "homepage": "https://github.com/tech4humans-brasil/framework/tree/main/packages/cli",
6
+ "bugs": "https://github.com/tech4humans-brasil/framework/issues",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/tech4humans-brasil/framework.git",
10
+ "directory": "packages/cli"
11
+ },
12
+ "license": "MIT",
13
+ "author": "Tech4Humans <contact@tech4h.com.br> (https://tech4h.com.br)",
14
+ "type": "module",
15
+ "bin": {
16
+ "framework": "./dist/bin/bin.js"
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "LICENSE"
21
+ ],
22
+ "scripts": {
23
+ "build": "tsc --project tsconfig.build.json",
24
+ "check-types": "tsc --noEmit",
25
+ "lint": "eslint .",
26
+ "test": "vitest --run",
27
+ "test:watch": "vitest",
28
+ "prepublishOnly": "yarn build"
29
+ },
30
+ "dependencies": {
31
+ "@inquirer/prompts": "^8.3.0",
32
+ "commander": "^14.0.3",
33
+ "form-data": "^4.0.5",
34
+ "json-rpc-2.0": "^1.7.1",
35
+ "mime-types": "^3.0.2",
36
+ "nodemailer": "^8.0.1",
37
+ "qs": "^6.15.0",
38
+ "sift": "^17.1.3",
39
+ "tar": "^7.5.10",
40
+ "undici": "^7.22.0"
41
+ },
42
+ "devDependencies": {
43
+ "@t4h.framework/core": "workspace:^",
44
+ "@t4h.framework/fs": "workspace:^",
45
+ "@t4h.framework/http": "workspace:^",
46
+ "@t4h.framework/orm": "workspace:^",
47
+ "@types/json-schema": "^7.0.15",
48
+ "@types/mime-types": "^3",
49
+ "@types/node": "^25.3.5",
50
+ "@types/nodemailer": "^7.0.11",
51
+ "@types/qs": "^6",
52
+ "json-schema-typed": "^8.0.2",
53
+ "typescript": "^5.9.3",
54
+ "vitest": "^4.0.18"
55
+ },
56
+ "peerDependencies": {
57
+ "@t4h.framework/core": "workspace:^",
58
+ "@t4h.framework/fs": "workspace:^",
59
+ "@t4h.framework/http": "workspace:^",
60
+ "@t4h.framework/orm": "workspace:^"
61
+ },
62
+ "packageManager": "yarn@4.12.0",
63
+ "engines": {
64
+ "node": ">=22"
65
+ },
66
+ "stableVersion": "0.0.0"
67
+ }