@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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Tech four humans
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # cli
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env node
2
+ import { spawn } from 'node:child_process';
3
+ function hasReactServerCondition() {
4
+ const argv = process.execArgv;
5
+ return (argv.includes('--conditions=react-server') ||
6
+ argv.some(a => a.startsWith('--conditions=') &&
7
+ a.split('=')[1]?.split(',').includes('react-server')) ||
8
+ (argv.includes('--conditions') && argv.includes('react-server')));
9
+ }
10
+ function relaunchWithReactServerCondition() {
11
+ if (process.env.__RELAUNCHED_WITH_REACT_SERVER_CONDITION__ === '1')
12
+ return false;
13
+ const execArgv = [...process.execArgv];
14
+ const filtered = [];
15
+ for (let i = 0; i < execArgv.length; i++) {
16
+ const a = execArgv[i];
17
+ if (a === '--conditions') {
18
+ i++;
19
+ continue;
20
+ }
21
+ if (a?.startsWith('--conditions='))
22
+ continue;
23
+ filtered.push(a);
24
+ }
25
+ const conditions = ['react-server'];
26
+ filtered.push(`--conditions=${conditions.join(',')}`);
27
+ const child = spawn(process.execPath,
28
+ // @ts-expect-error - process.argv is not typed
29
+ [...filtered, process.argv[1], ...process.argv.slice(2)], {
30
+ stdio: 'inherit',
31
+ env: {
32
+ ...process.env,
33
+ __RELAUNCHED_WITH_REACT_SERVER_CONDITION__: '1',
34
+ },
35
+ });
36
+ // @ts-expect-error - child is not typed
37
+ child.on('exit', code => process.exit(code ?? 0));
38
+ // @ts-expect-error - child is not typed
39
+ child.on('error', err => {
40
+ console.error(err);
41
+ process.exit(1);
42
+ });
43
+ return true;
44
+ }
45
+ if (!hasReactServerCondition())
46
+ relaunchWithReactServerCondition();
47
+ else {
48
+ const { program } = await import('commander');
49
+ const { buildCommand } = await import('../commands/build/build.js');
50
+ const { devCommand } = await import('../commands/dev/dev.js');
51
+ const { publishCommand } = await import('../commands/publish/publish.js');
52
+ program.addCommand(devCommand);
53
+ program.addCommand(publishCommand);
54
+ program.addCommand(buildCommand);
55
+ await program.parseAsync(process.argv);
56
+ }
57
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/bin/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE1C,SAAS,uBAAuB;IAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAA;IAC7B,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC1C,IAAI,CAAC,IAAI,CACP,CAAC,CAAC,EAAE,CACF,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC;YAC7B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CACvD;QACD,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CACjE,CAAA;AACH,CAAC;AAED,SAAS,gCAAgC;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,0CAA0C,KAAK,GAAG;QAChE,OAAO,KAAK,CAAA;IAEd,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAEtC,MAAM,QAAQ,GAAG,EAAE,CAAA;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,CAAC,KAAK,cAAc,EAAE,CAAC;YACzB,CAAC,EAAE,CAAA;YACH,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC;YAAE,SAAQ;QAC5C,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,cAAc,CAAC,CAAA;IACnC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAErD,MAAM,KAAK,GAAG,KAAK,CACjB,OAAO,CAAC,QAAQ;IAChB,+CAA+C;IAC/C,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACxD;QACE,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE;YACH,GAAG,OAAO,CAAC,GAAG;YACd,0CAA0C,EAAE,GAAG;SAChD;KACF,CACF,CAAA;IAED,wCAAwC;IACxC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAA;IACjD,wCAAwC;IACxC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;QACtB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,IAAI,CAAC,uBAAuB,EAAE;IAAE,gCAAgC,EAAE,CAAA;KAC7D,CAAC;IACJ,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;IAE7C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAA;IACnE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAA;IAC7D,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAA;IAEzE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAC9B,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;IAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;IAEhC,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACxC,CAAC"}
@@ -0,0 +1,49 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { Command, Option } from 'commander';
4
+ import { mkdirOutDirProjectFromTsConfigPathAndJsonPackagePath } from '../../tools/mkdir-out-dir-project-from-ts-config-path-and-json-package-path.js';
5
+ import { resolvePackageJsonPath } from '../../tools/resolve-package-json-path.js';
6
+ import { resolveTsconfigFromPackageJsonPath } from '../../tools/resolve-tsconfig-path-from-package-json-path.js';
7
+ import { tsBuild } from '../../tools/ts-build.js';
8
+ import { upApp } from '../../tools/up-app.js';
9
+ export const buildCommand = new Command('build')
10
+ .option('--entrypoint <entrypoint path>', 'The entrypoint package json path', './package.json')
11
+ .addOption(new Option('-e, --env <envs..>', 'The env secrets')
12
+ .argParser((value, previous) => {
13
+ const [environmentVariableName, environmentVariableValue] = value.split('=');
14
+ if (!environmentVariableName)
15
+ throw new Error('Invalid secret format');
16
+ if (!environmentVariableValue)
17
+ throw new Error('Invalid secret format');
18
+ return {
19
+ ...previous,
20
+ [environmentVariableName]: environmentVariableValue,
21
+ };
22
+ })
23
+ .default({}))
24
+ .action(async (options) => {
25
+ const entrypointPackageJsonPath = await resolvePackageJsonPath(options.entrypoint);
26
+ const entrypointTsConfigPath = await resolveTsconfigFromPackageJsonPath(entrypointPackageJsonPath);
27
+ const outDir = await mkdirOutDirProjectFromTsConfigPathAndJsonPackagePath(entrypointTsConfigPath, entrypointPackageJsonPath);
28
+ const compileResult = await tsBuild(entrypointTsConfigPath, {
29
+ outDir: path.join(outDir, 'dist'),
30
+ sourceMap: true,
31
+ declaration: false,
32
+ declarationMap: false,
33
+ });
34
+ if (!compileResult.ok)
35
+ throw new Error(compileResult.diagnostics.join('\n'));
36
+ const { Env } = await import('@t4h.framework/core');
37
+ await Env.run(options.env, async () => {
38
+ const { default: packageJson } = await import(entrypointPackageJsonPath, {
39
+ with: { type: 'json' },
40
+ });
41
+ if (typeof packageJson.main !== 'string')
42
+ throw new Error('Entrypoint main is not a string');
43
+ const app = await upApp(path.join(outDir, 'dist', packageJson.main));
44
+ const manifest = app.toManifest();
45
+ process.send?.(JSON.stringify({ type: 'manifest', data: manifest }));
46
+ await fs.promises.writeFile(path.join(outDir, 'manifest.json'), JSON.stringify(manifest, null, 2));
47
+ });
48
+ });
49
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/build/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import { AbortPromptError } from '@inquirer/core';
2
+ import { input, select } from '@inquirer/prompts';
3
+ import { Command, Option } from 'commander';
4
+ import { DevServer } from '../../models/DevServer.js';
5
+ import { jsonSchemaToInquirerQuestion } from '../../tools/json-schema-to-inquirer-question.js';
6
+ export const devCommand = new Command('dev')
7
+ .description('Start the development server')
8
+ .option('--entrypoint <entrypoint path>', 'The entrypoint package json path', './package.json')
9
+ .addOption(new Option('-e, --env <envs..>', 'The env secrets')
10
+ .argParser((value, previous) => {
11
+ const [environmentVariableName, environmentVariableValue] = value.split('=');
12
+ if (!environmentVariableName)
13
+ throw new Error('Invalid secret format');
14
+ if (!environmentVariableValue)
15
+ throw new Error('Invalid secret format');
16
+ return {
17
+ ...previous,
18
+ [environmentVariableName]: environmentVariableValue,
19
+ };
20
+ })
21
+ .default({}))
22
+ .action(async (options) => {
23
+ let abortController = null;
24
+ const devServer = new DevServer({ entrypoint: options.entrypoint, env: options.env }, async (manifest) => {
25
+ if (abortController) {
26
+ abortController.abort();
27
+ console.clear();
28
+ }
29
+ abortController = new AbortController();
30
+ await Promise.all(Object.entries(options.env).map(([name, value]) => devServer.setEnv(name, value)));
31
+ async function selectWorkflowToRun() {
32
+ const fn = await select({
33
+ message: 'Select a workflow to run',
34
+ choices: [
35
+ ...manifest.workflows.map(workflow => ({
36
+ name: workflow.id,
37
+ value: async () => {
38
+ let input;
39
+ if (workflow.schema)
40
+ input = await jsonSchemaToInquirerQuestion(workflow.schema);
41
+ await devServer.runWorkflow(workflow.id, input);
42
+ },
43
+ })),
44
+ {
45
+ name: '.. (Go Back)',
46
+ value: async () => { },
47
+ },
48
+ ],
49
+ });
50
+ await fn();
51
+ }
52
+ async function selectEnvToSet() {
53
+ const fn = await select({
54
+ message: 'Select an environment variable to set',
55
+ choices: [
56
+ ...Object.entries(manifest.env.properties).map(([name]) => ({
57
+ name: name,
58
+ value: async () => {
59
+ const value = await input({
60
+ message: `Enter the value for ${name}`,
61
+ });
62
+ await devServer.setEnv(name, value);
63
+ },
64
+ })),
65
+ {
66
+ name: '.. (Go Back)',
67
+ value: async () => { },
68
+ },
69
+ ],
70
+ });
71
+ await fn();
72
+ }
73
+ try {
74
+ while (true) {
75
+ const choice = await select({
76
+ message: 'Select an option',
77
+ choices: [
78
+ {
79
+ name: 'List environment variables',
80
+ value: async () => {
81
+ const env = await devServer.listEnv();
82
+ console.table(env);
83
+ },
84
+ },
85
+ {
86
+ name: 'Set environment variable',
87
+ value: selectEnvToSet,
88
+ },
89
+ {
90
+ name: 'Run workflow',
91
+ value: selectWorkflowToRun,
92
+ },
93
+ { name: 'Exit', value: async () => process.exit(0) },
94
+ ],
95
+ }, {
96
+ signal: abortController.signal,
97
+ });
98
+ await choice();
99
+ }
100
+ }
101
+ catch (error) {
102
+ if (error instanceof AbortPromptError)
103
+ return;
104
+ throw error;
105
+ }
106
+ });
107
+ await devServer.start();
108
+ });
109
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/commands/dev/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAA;AAO9F,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CACL,gCAAgC,EAChC,kCAAkC,EAClC,gBAAgB,CACjB;KACA,SAAS,CACR,IAAI,MAAM,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;KAChD,SAAS,CAAyB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;IACrD,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,GACvD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAElB,IAAI,CAAC,uBAAuB;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAEtE,IAAI,CAAC,wBAAwB;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAEvE,OAAO;QACL,GAAG,QAAQ;QACX,CAAC,uBAAuB,CAAC,EAAE,wBAAwB;KACpD,CAAA;AACH,CAAC,CAAC;KACD,OAAO,CAAC,EAAE,CAAC,CACf;KACA,MAAM,CAAC,KAAK,EAAE,OAA0B,EAAE,EAAE;IAC3C,IAAI,eAAe,GAA2B,IAAI,CAAA;IAElD,MAAM,SAAS,GAAG,IAAI,SAAS,CAC7B,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EACpD,KAAK,EAAC,QAAQ,EAAC,EAAE;QACf,IAAI,eAAe,EAAE,CAAC;YACpB,eAAe,CAAC,KAAK,EAAE,CAAA;YAEvB,OAAO,CAAC,KAAK,EAAE,CAAA;QACjB,CAAC;QAED,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QAEvC,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAChD,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAC9B,CACF,CAAA;QAED,KAAK,UAAU,mBAAmB;YAChC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC;gBACtB,OAAO,EAAE,0BAA0B;gBACnC,OAAO,EAAE;oBACP,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;wBACrC,IAAI,EAAE,QAAQ,CAAC,EAAG;wBAClB,KAAK,EAAE,KAAK,IAAI,EAAE;4BAChB,IAAI,KAAU,CAAA;4BAEd,IAAI,QAAQ,CAAC,MAAM;gCACjB,KAAK,GAAG,MAAM,4BAA4B,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;4BAE7D,MAAM,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAG,EAAE,KAAK,CAAC,CAAA;wBAClD,CAAC;qBACF,CAAC,CAAC;oBACH;wBACE,IAAI,EAAE,cAAc;wBACpB,KAAK,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;qBACtB;iBACF;aACF,CAAC,CAAA;YAEF,MAAM,EAAE,EAAE,CAAA;QACZ,CAAC;QAED,KAAK,UAAU,cAAc;YAC3B,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC;gBACtB,OAAO,EAAE,uCAAuC;gBAChD,OAAO,EAAE;oBACP,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC1D,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,KAAK,IAAI,EAAE;4BAChB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC;gCACxB,OAAO,EAAE,uBAAuB,IAAI,EAAE;6BACvC,CAAC,CAAA;4BAEF,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;wBACrC,CAAC;qBACF,CAAC,CAAC;oBACH;wBACE,IAAI,EAAE,cAAc;wBACpB,KAAK,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;qBACtB;iBACF;aACF,CAAC,CAAA;YAEF,MAAM,EAAE,EAAE,CAAA;QACZ,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB;oBACE,OAAO,EAAE,kBAAkB;oBAC3B,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,4BAA4B;4BAClC,KAAK,EAAE,KAAK,IAAI,EAAE;gCAChB,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,CAAA;gCAErC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;4BACpB,CAAC;yBACF;wBACD;4BACE,IAAI,EAAE,0BAA0B;4BAChC,KAAK,EAAE,cAAc;yBACtB;wBACD;4BACE,IAAI,EAAE,cAAc;4BACpB,KAAK,EAAE,mBAAmB;yBAC3B;wBACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;qBACrD;iBACF,EACD;oBACE,MAAM,EAAE,eAAe,CAAC,MAAM;iBAC/B,CACF,CAAA;gBAED,MAAM,MAAM,EAAE,CAAA;YAChB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,gBAAgB;gBAAE,OAAM;YAE7C,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CACF,CAAA;IAED,MAAM,SAAS,CAAC,KAAK,EAAE,CAAA;AACzB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,84 @@
1
+ import { App, Env, Internals, PushActivity, SyncActivity, Workflow, } from '@t4h.framework/core';
2
+ import { FileSystemClaim } from '@t4h.framework/fs';
3
+ import { HttpClientRequestClaim } from '@t4h.framework/http';
4
+ import { ORMClaim } from '@t4h.framework/orm';
5
+ import Type from 'typebox';
6
+ import { SmtpSendEmailClaim } from '../../../smtp/dist/models/SmtpSendEmailClaim.js';
7
+ import { DevServerFileSystemClaim } from '../models/DevServerFileSystemClaim.js';
8
+ import { DevServerHttpClientRequestClaim } from '../models/DevServerHttpClientRequestClaim.js';
9
+ import { DevServerORMClaim } from '../models/DevServerORMClaim.js';
10
+ import { DevServerSmtpSendEmailClaim } from '../models/DevServerSmtpSendEmailClaim.js';
11
+ import { JSONRPCClient } from '../models/JSONRPCClient.js';
12
+ import { JSONRPCServer, JSONRPCServerMethod } from '../models/JSONRPCServer.js';
13
+ import { upApp } from '../tools/up-app.js';
14
+ const [entrypoint, ...envArgs] = process.argv.slice(2);
15
+ if (typeof entrypoint !== 'string')
16
+ throw new Error('Entrypoint is not a string');
17
+ const claims = [
18
+ { provide: ORMClaim, value: new DevServerORMClaim() },
19
+ {
20
+ provide: HttpClientRequestClaim,
21
+ value: new DevServerHttpClientRequestClaim(),
22
+ },
23
+ {
24
+ provide: FileSystemClaim,
25
+ value: new DevServerFileSystemClaim(),
26
+ },
27
+ {
28
+ provide: SmtpSendEmailClaim,
29
+ value: new DevServerSmtpSendEmailClaim(),
30
+ },
31
+ ];
32
+ let app = null;
33
+ const env = new Map(envArgs.map(env => env.split('=')));
34
+ async function workflow_run(workflowId, input, history = []) {
35
+ let workflow;
36
+ if (workflowId.startsWith(':')) {
37
+ const index = parseInt(workflowId.slice(1));
38
+ workflow = app.workflows[index];
39
+ }
40
+ if (!workflow)
41
+ workflow = app.workflows.find(workflow => workflow.id === workflowId);
42
+ if (!workflow)
43
+ return;
44
+ try {
45
+ return await Internals.runWorkflow(workflow, {
46
+ claims,
47
+ history,
48
+ env,
49
+ input,
50
+ });
51
+ }
52
+ catch (errorOrPushActivity) {
53
+ if (errorOrPushActivity instanceof PushActivity) {
54
+ const output = await Internals.runActivity(errorOrPushActivity.activity, { claims, env }, async (activity) => {
55
+ if (!(activity instanceof SyncActivity))
56
+ throw new Error('Async activity not supported');
57
+ return await activity.run(errorOrPushActivity.input);
58
+ });
59
+ return workflow_run(workflowId, input, [...history, { output }]);
60
+ }
61
+ throw errorOrPushActivity;
62
+ }
63
+ }
64
+ const workflowRun = new JSONRPCServerMethod('workflow.run', { schema: [Type.String(), Type.Any()] }, async (workflowId, input) => workflow_run(workflowId, input));
65
+ const envSet = new JSONRPCServerMethod('env.set', { schema: [Type.String(), Type.String()] }, (name, value) => env.set(name, value));
66
+ const envList = new JSONRPCServerMethod('env.list', () => Object.fromEntries(env));
67
+ const server = new JSONRPCServer([workflowRun, envSet, envList], message => {
68
+ process.send?.(message);
69
+ });
70
+ const client = new JSONRPCClient(async (message) => {
71
+ process.send?.(message);
72
+ });
73
+ process.on('message', message => Promise.all([server.handle(message), client.handle(message)]));
74
+ Env.run(env, async () => {
75
+ app = await upApp(entrypoint);
76
+ const manifest = app.toManifest();
77
+ manifest.workflows = manifest.workflows.map((workflow, index) => ({
78
+ id: workflow.id ?? `:${index}`,
79
+ description: workflow.description,
80
+ schema: workflow.schema,
81
+ }));
82
+ await client.notify('manifest', manifest);
83
+ });
84
+ //# sourceMappingURL=dev-server-up-app-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-server-up-app-process.js","sourceRoot":"","sources":["../../src/commands/dev-server-up-app-process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ import { fork } from 'node:child_process';
2
+ import fs from 'node:fs';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import { URL, URLSearchParams } from 'node:url';
6
+ import * as prompts from '@inquirer/prompts';
7
+ import { Command, Option } from 'commander';
8
+ import FormData from 'form-data';
9
+ import qs from 'qs';
10
+ import * as tar from 'tar';
11
+ export const publishCommand = new Command('publish')
12
+ .option('-r, --runtime <connection string>', 'The connection string to the runtime')
13
+ .option('--runtime-client-id <client id>', 'The runtime client id')
14
+ .option('--runtime-client-secret <client secret>', 'The runtime client secret')
15
+ .option('--entrypoint <entrypoint path>', 'The entrypoint folder or package json path', './package.json')
16
+ .addOption(new Option('-v, --variable <variables..>', 'The env variables')
17
+ .argParser((value, previous) => {
18
+ const [variableName, variableValue] = value.split('=');
19
+ if (!variableName)
20
+ throw new Error('Invalid variable format');
21
+ if (!variableValue)
22
+ throw new Error('Invalid variable format');
23
+ return { ...previous, [variableName]: variableValue };
24
+ })
25
+ .default({}))
26
+ .addOption(new Option('-s, --secret <secrets..>', 'The env secrets')
27
+ .argParser((value, previous) => {
28
+ const [secretName, secretValue] = value.split('=');
29
+ if (!secretName)
30
+ throw new Error('Invalid secret format');
31
+ if (!secretValue)
32
+ throw new Error('Invalid secret format');
33
+ return { ...previous, [secretName]: secretValue };
34
+ })
35
+ .default({}))
36
+ .action(async (options) => {
37
+ const entrypoint = path.resolve(options.entrypoint);
38
+ // const entrypointParsedPath = path.parse(entrypoint)
39
+ const entrypointStats = await fs.promises.stat(entrypoint);
40
+ let entrypointPackageJsonPath;
41
+ if (entrypointStats.isDirectory())
42
+ entrypointPackageJsonPath = path.join(entrypoint, 'package.json');
43
+ else if (entrypointStats.isFile())
44
+ entrypointPackageJsonPath = entrypoint;
45
+ else
46
+ throw new Error(`Entrypoint is not a file or directory: ${entrypoint}`);
47
+ try {
48
+ await fs.promises.access(entrypointPackageJsonPath, fs.constants.F_OK);
49
+ }
50
+ catch (error) {
51
+ throw new Error(`Entrypoint package json not found: ${entrypointPackageJsonPath}`, { cause: error });
52
+ }
53
+ const envs = Object.entries(options.variable)
54
+ .flatMap(([name, value]) => ['-e', `${name}=${value}`])
55
+ .concat(Object.entries(options.secret).flatMap(([name, value]) => [
56
+ '-e',
57
+ `${name}=${value}`,
58
+ ]));
59
+ const data = await new Promise((resolve, reject) => {
60
+ const binPath = path.join(import.meta.dirname, '..', '..', 'bin', 'bin.js');
61
+ const process = fork(binPath, ['build', '--entrypoint', entrypoint, ...envs], {
62
+ stdio: 'inherit',
63
+ });
64
+ const data = {};
65
+ process.on('close', code => {
66
+ if (code === 0)
67
+ resolve(data);
68
+ else
69
+ reject(new Error(`Build failed with code ${code}`));
70
+ });
71
+ process.on('error', error => reject(error));
72
+ process.on('message', message => {
73
+ const json = JSON.parse(message.toString());
74
+ data[json.type] = json.data;
75
+ });
76
+ });
77
+ if (!data.outDir)
78
+ throw new Error('Out dir not found');
79
+ const tempArtifactPath = await fs.promises.mkdtemp(path.join(os.tmpdir(), 'artifact-'));
80
+ const artifactPath = path.join(tempArtifactPath, 'artifact.tgz');
81
+ await tar.create({
82
+ file: path.join(tempArtifactPath, 'artifact.tgz'),
83
+ gzip: true,
84
+ cwd: data.outDir,
85
+ }, ['.']);
86
+ const artifactStat = await fs.promises.stat(artifactPath);
87
+ const form = new FormData();
88
+ const query = qs.stringify({
89
+ id: data.manifest.id,
90
+ defaultProjectTag: 'latest',
91
+ manifest: data.manifest,
92
+ variables: options.variable,
93
+ secrets: options.secret,
94
+ }, { encode: false });
95
+ query.split('&').forEach(param => {
96
+ const [key, value] = param.split('=');
97
+ if (!key)
98
+ return;
99
+ form.append(key, value);
100
+ });
101
+ form.append('artifact', fs.createReadStream(artifactPath), {
102
+ filename: 'artifact.tgz',
103
+ contentType: 'application/tar+gzip',
104
+ filepath: artifactPath,
105
+ knownLength: artifactStat.size,
106
+ });
107
+ const runtimeUrl = await prompts.input({
108
+ message: 'Enter the runtime connection string',
109
+ default: options.runtime,
110
+ required: true,
111
+ });
112
+ const runtimeClientId = await prompts.input({
113
+ message: 'Enter the runtime client id',
114
+ default: options.runtimeClientId,
115
+ required: true,
116
+ });
117
+ const runtimeClientSecret = await prompts.input({
118
+ message: 'Enter the runtime client secret',
119
+ default: options.runtimeClientSecret,
120
+ required: true,
121
+ });
122
+ const res = await fetch('http://id.local.tech4h.com.br:3001/authz/token', {
123
+ method: 'POST',
124
+ body: new URLSearchParams({
125
+ client_id: runtimeClientId,
126
+ client_secret: runtimeClientSecret,
127
+ grant_type: 'client_credentials',
128
+ }),
129
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
130
+ });
131
+ const { access_token } = (await res.json());
132
+ const url = new URL(`${runtimeUrl}/projects`);
133
+ const response = await new Promise((resolve, reject) => {
134
+ const request = form.submit({
135
+ method: 'PUT',
136
+ port: url.port,
137
+ path: url.pathname,
138
+ host: url.hostname,
139
+ protocol: url.protocol,
140
+ headers: { Authorization: `Bearer ${access_token}` },
141
+ });
142
+ request.on('response', response => resolve(response));
143
+ request.on('error', error => reject(error));
144
+ });
145
+ const body = Buffer.concat(await response.toArray()).toString();
146
+ const json = JSON.parse(body);
147
+ void json;
148
+ });
149
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/commands/publish/publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import fs from 'node:fs';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ import { Readable } from 'node:stream';
5
+ import { ActivityFileSystemClaim } from '@t4h.framework/fs';
6
+ import mime from 'mime-types';
7
+ import { FileBinary } from './FileBinary.js';
8
+ export class CliFileSystemClaim extends ActivityFileSystemClaim {
9
+ async write(filepath, readable) {
10
+ const { base } = path.parse(filepath);
11
+ const tempDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), 'fs-'));
12
+ const _filepath = path.join(tempDir, filepath);
13
+ await fs.promises.writeFile(_filepath, readable);
14
+ const stat = await fs.promises.stat(_filepath);
15
+ return FileBinary.from({
16
+ path: _filepath,
17
+ contentType: mime.lookup(base) || 'application/octet-stream',
18
+ contentLength: stat.size,
19
+ });
20
+ }
21
+ async read(filepath) {
22
+ const stat = await fs.promises.stat(filepath);
23
+ return FileBinary.from({
24
+ path: filepath,
25
+ contentType: mime.lookup(path.extname(filepath)) || 'application/octet-stream',
26
+ contentLength: stat.size,
27
+ });
28
+ }
29
+ }
30
+ //# sourceMappingURL=CliFileSystemClaim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CliFileSystemClaim.js","sourceRoot":"","sources":["../../src/models/CliFileSystemClaim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,IAAI,MAAM,YAAY,CAAA;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,MAAM,OAAO,kBAAmB,SAAQ,uBAAuB;IACtD,KAAK,CAAC,KAAK,CAChB,QAAgB,EAChB,QAAkB;QAElB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAErC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;QAExE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAE9C,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAEhD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAE9C,OAAO,UAAU,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,0BAA0B;YAC5D,aAAa,EAAE,IAAI,CAAC,IAAI;SACzB,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,QAAgB;QAChC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAE7C,OAAO,UAAU,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE,QAAQ;YACd,WAAW,EACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,0BAA0B;YACnE,aAAa,EAAE,IAAI,CAAC,IAAI;SACzB,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ import { ActivityHttpClientRequestClaim, } from '@t4h.framework/http';
2
+ import { Agent, request } from 'undici';
3
+ export class CliHttpClientRequestClaim extends ActivityHttpClientRequestClaim {
4
+ async request(input) {
5
+ if (input.body instanceof URLSearchParams)
6
+ input.body = Buffer.from(input.body.toString());
7
+ const response = await request(input.url, {
8
+ method: input.method,
9
+ body: input.body,
10
+ headers: input.headers,
11
+ dispatcher: new Agent(),
12
+ });
13
+ const res = {
14
+ status: response.statusCode,
15
+ headers: response.headers,
16
+ body: response.body,
17
+ };
18
+ return res;
19
+ }
20
+ }
21
+ //# sourceMappingURL=CliHttpClientRequestClaim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CliHttpClientRequestClaim.js","sourceRoot":"","sources":["../../src/models/CliHttpClientRequestClaim.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,GAG/B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEvC,MAAM,OAAO,yBAA0B,SAAQ,8BAA8B;IACpE,KAAK,CAAC,OAAO,CAClB,KAAkC;QAElC,IAAI,KAAK,CAAC,IAAI,YAAY,eAAe;YACvC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QAEjD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;YACxC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,UAAU,EAAE,IAAI,KAAK,EAAE;SACxB,CAAC,CAAA;QAEF,MAAM,GAAG,GAAG;YACV,MAAM,EAAE,QAAQ,CAAC,UAAU;YAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;SACpB,CAAA;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;CACF"}
@@ -0,0 +1,37 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { ORMClaim, } from '@t4h.framework/orm';
4
+ import { InMemoryDatabase } from './InMemoryDatabase.js';
5
+ import { jsonCodec } from '../tools/json-codec.js';
6
+ const dbPath = path.join(process.cwd(), 'db.json');
7
+ const initial = fs.existsSync(dbPath) ? fs.readFileSync(dbPath, 'utf8') : '{}';
8
+ const json = await jsonCodec.parse(initial, {});
9
+ const db = new InMemoryDatabase(json);
10
+ db.on('change', async () => {
11
+ fs.writeFileSync(dbPath, await jsonCodec.stringify(db.toJSON(), {}));
12
+ });
13
+ export class CliORMClaim extends ORMClaim {
14
+ find(input) {
15
+ return db
16
+ .table(input.table)
17
+ .find(input)
18
+ .map(row => row.id);
19
+ }
20
+ create(input) {
21
+ return db.table(input.table).insert(input.data);
22
+ }
23
+ getSnapshot(input) {
24
+ const [row] = db.table(input.table).find({
25
+ where: { id: input.ref },
26
+ limit: 1,
27
+ });
28
+ return row;
29
+ }
30
+ update(input) {
31
+ db.table(input.table).update({ id: input.ref }, input.data);
32
+ }
33
+ remove(input) {
34
+ db.table(input.table).delete({ id: input.ref });
35
+ }
36
+ }
37
+ //# sourceMappingURL=CliORMClaim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CliORMClaim.js","sourceRoot":"","sources":["../../src/models/CliORMClaim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EACL,QAAQ,GAOT,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAA;AAElD,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAE9E,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;AAE/C,MAAM,EAAE,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAA;AAErC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IACzB,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;AACtE,CAAC,CAAC,CAAA;AAEF,MAAM,OAAO,WAAY,SAAQ,QAAgB;IACxC,IAAI,CAAC,KAA4B;QACtC,OAAO,EAAE;aACN,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;aAClB,IAAI,CAAC,KAAK,CAAC;aACX,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC;IAEM,MAAM,CAAC,KAA8B;QAC1C,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjD,CAAC;IAEM,WAAW,CAChB,KAA2C;QAE3C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;YACvC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE;YACxB,KAAK,EAAE,CAAC;SACT,CAAC,CAAA;QAEF,OAAO,GAAI,CAAA;IACb,CAAC;IAEM,MAAM,CAAC,KAAsC;QAClD,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IAC7D,CAAC;IAEM,MAAM,CAAC,KAAsC;QAClD,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;IACjD,CAAC;CACF"}