@pikku/cli 0.7.1 → 0.7.3
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/CHANGELOG.md +17 -0
- package/bin/pikku-all.ts +5 -2
- package/bin/pikku-channels-map.ts +2 -33
- package/bin/pikku-channels.ts +2 -30
- package/bin/pikku-fetch.ts +3 -3
- package/bin/pikku-function-types.ts +8 -42
- package/bin/pikku-functions.ts +3 -16
- package/bin/pikku-http-map.ts +3 -32
- package/bin/pikku-http-routes.ts +2 -30
- package/bin/pikku-nextjs.ts +1 -1
- package/bin/pikku-openapi.ts +4 -2
- package/bin/pikku-rpc-map.ts +25 -0
- package/bin/pikku-rpc.ts +62 -7
- package/bin/pikku-scheduler.ts +2 -30
- package/bin/pikku-schemas.ts +5 -4
- package/bin/pikku-websocket.ts +1 -1
- package/bin/pikku.ts +0 -10
- package/dist/bin/pikku-all.d.ts +1 -1
- package/dist/bin/pikku-all.js +5 -2
- package/dist/bin/pikku-channels-map.d.ts +0 -2
- package/dist/bin/pikku-channels-map.js +1 -16
- package/dist/bin/pikku-channels.d.ts +0 -2
- package/dist/bin/pikku-channels.js +1 -16
- package/dist/bin/pikku-fetch.d.ts +1 -1
- package/dist/bin/pikku-fetch.js +1 -1
- package/dist/bin/pikku-function-types.d.ts +2 -4
- package/dist/bin/pikku-function-types.js +3 -22
- package/dist/bin/pikku-functions.js +3 -4
- package/dist/bin/pikku-http-map.d.ts +0 -2
- package/dist/bin/pikku-http-map.js +2 -17
- package/dist/bin/pikku-http-routes.d.ts +0 -2
- package/dist/bin/pikku-http-routes.js +1 -16
- package/dist/bin/pikku-nextjs.d.ts +1 -1
- package/dist/bin/pikku-nextjs.js +1 -1
- package/dist/bin/pikku-openapi.js +3 -3
- package/dist/bin/pikku-rpc-map.d.ts +3 -0
- package/dist/bin/pikku-rpc-map.js +8 -0
- package/dist/bin/pikku-rpc.d.ts +5 -1
- package/dist/bin/pikku-rpc.js +33 -6
- package/dist/bin/pikku-scheduler.d.ts +0 -2
- package/dist/bin/pikku-scheduler.js +1 -16
- package/dist/bin/pikku-schemas.d.ts +1 -1
- package/dist/bin/pikku-schemas.js +4 -4
- package/dist/bin/pikku-websocket.d.ts +1 -1
- package/dist/bin/pikku-websocket.js +1 -1
- package/dist/bin/pikku.js +0 -10
- package/dist/src/inspector-glob.js +1 -1
- package/dist/src/openapi-spec-generator.d.ts +2 -2
- package/dist/src/openapi-spec-generator.js +14 -5
- package/dist/src/pikku-cli-config.d.ts +7 -5
- package/dist/src/pikku-cli-config.js +6 -0
- package/dist/src/schema-generator.d.ts +3 -3
- package/dist/src/schema-generator.js +16 -34
- package/dist/src/serialize-pikku-types.d.ts +1 -1
- package/dist/src/serialize-pikku-types.js +6 -3
- package/dist/src/serialize-typed-channel-map.js +2 -2
- package/dist/src/serialize-typed-http-map.d.ts +2 -1
- package/dist/src/serialize-typed-http-map.js +11 -5
- package/dist/src/serialize-typed-rpc-map.d.ts +4 -0
- package/dist/src/serialize-typed-rpc-map.js +66 -0
- package/dist/src/{utils.d.ts → utils/utils.d.ts} +2 -1
- package/dist/src/{utils.js → utils/utils.js} +15 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/inspector-glob.ts +1 -1
- package/src/openapi-spec-generator.ts +23 -4
- package/src/pikku-cli-config.ts +31 -5
- package/src/schema-generator.ts +18 -36
- package/src/serialize-pikku-types.ts +6 -3
- package/src/serialize-typed-channel-map.ts +2 -2
- package/src/serialize-typed-http-map.ts +19 -3
- package/src/serialize-typed-rpc-map.ts +105 -0
- package/src/{utils.ts → utils/utils.ts} +20 -2
- package/dist/src/serialize-typed-function-map.d.ts +0 -4
- package/dist/src/serialize-typed-function-map.js +0 -107
- package/src/serialize-typed-function-map.ts +0 -151
- /package/dist/src/{serialize-import-map.d.ts → utils/serialize-import-map.d.ts} +0 -0
- /package/dist/src/{serialize-import-map.js → utils/serialize-import-map.js} +0 -0
- /package/src/{serialize-import-map.ts → utils/serialize-import-map.ts} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @pikku/cli
|
|
2
2
|
|
|
3
|
+
## 0.7.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 46d4458: feat: we now have typed rpc calls inside of functions!
|
|
8
|
+
- Updated dependencies [46d4458]
|
|
9
|
+
- @pikku/core@0.7.5
|
|
10
|
+
|
|
11
|
+
## 0.7.2
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- 598588f: fix: generating output schemas from function meta
|
|
16
|
+
- Updated dependencies [598588f]
|
|
17
|
+
- @pikku/inspector@0.7.4
|
|
18
|
+
- @pikku/core@0.7.4
|
|
19
|
+
|
|
3
20
|
## 0.7.1
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
package/bin/pikku-all.ts
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
logPikkuLogo,
|
|
6
6
|
PikkuCLIOptions,
|
|
7
7
|
writeFileInDir,
|
|
8
|
-
} from '../src/utils.js'
|
|
8
|
+
} from '../src/utils/utils.js'
|
|
9
9
|
import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
10
10
|
import { pikkuHTTP } from './pikku-http-routes.js'
|
|
11
11
|
import { pikkuFunctionTypes } from './pikku-function-types.js'
|
|
@@ -23,6 +23,7 @@ import { inspectorGlob } from '../src/inspector-glob.js'
|
|
|
23
23
|
import chokidar from 'chokidar'
|
|
24
24
|
import { pikkuFunctions } from './pikku-functions.js'
|
|
25
25
|
import { pikkuRPC } from './pikku-rpc.js'
|
|
26
|
+
import { pikkuRPCMap } from './pikku-rpc-map.js'
|
|
26
27
|
|
|
27
28
|
const runAll = async (cliConfig: PikkuCLIConfig, options: PikkuCLIOptions) => {
|
|
28
29
|
const metaImports: string[] = []
|
|
@@ -67,7 +68,9 @@ const runAll = async (cliConfig: PikkuCLIConfig, options: PikkuCLIOptions) => {
|
|
|
67
68
|
addImport(cliConfig.functionsFile, 'events')
|
|
68
69
|
|
|
69
70
|
await pikkuRPC(cliConfig, visitState)
|
|
70
|
-
|
|
71
|
+
await pikkuRPCMap(cliConfig, visitState)
|
|
72
|
+
addImport(cliConfig.rpcMetaFile, 'meta')
|
|
73
|
+
addImport(cliConfig.rpcFile, 'events')
|
|
71
74
|
|
|
72
75
|
const routes = await pikkuHTTP(cliConfig, visitState)
|
|
73
76
|
if (routes) {
|
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
1
|
+
import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
3
2
|
import { InspectorState } from '@pikku/inspector'
|
|
4
|
-
import {
|
|
5
|
-
logCommandInfoAndTime,
|
|
6
|
-
logPikkuLogo,
|
|
7
|
-
PikkuCLIOptions,
|
|
8
|
-
writeFileInDir,
|
|
9
|
-
} from '../src/utils.js'
|
|
3
|
+
import { logCommandInfoAndTime, writeFileInDir } from '../src/utils/utils.js'
|
|
10
4
|
import { serializeTypedChannelsMap } from '../src/serialize-typed-channel-map.js'
|
|
11
|
-
import { inspectorGlob } from '../src/inspector-glob.js'
|
|
12
5
|
|
|
13
6
|
export const pikkuChannelsMap = async (
|
|
14
7
|
{ channelsMapDeclarationFile, packageMappings }: PikkuCLIConfig,
|
|
@@ -29,27 +22,3 @@ export const pikkuChannelsMap = async (
|
|
|
29
22
|
}
|
|
30
23
|
)
|
|
31
24
|
}
|
|
32
|
-
|
|
33
|
-
async function action(cliOptions: PikkuCLIOptions): Promise<void> {
|
|
34
|
-
logPikkuLogo()
|
|
35
|
-
const cliConfig = await getPikkuCLIConfig(
|
|
36
|
-
cliOptions.config,
|
|
37
|
-
['rootDir', 'srcDirectories', 'httpRoutesFile'],
|
|
38
|
-
cliOptions.tags,
|
|
39
|
-
false
|
|
40
|
-
)
|
|
41
|
-
const visitState = await inspectorGlob(
|
|
42
|
-
cliConfig.rootDir,
|
|
43
|
-
cliConfig.srcDirectories,
|
|
44
|
-
cliConfig.filters
|
|
45
|
-
)
|
|
46
|
-
await pikkuChannelsMap(cliConfig, visitState)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export const channelsMap = (program: Command): void => {
|
|
50
|
-
program
|
|
51
|
-
.command('channels-map')
|
|
52
|
-
.description('Generate a map of all channels to aid in type checking')
|
|
53
|
-
.option('-c | --config <string>', 'The path to pikku cli config file')
|
|
54
|
-
.action(action)
|
|
55
|
-
}
|
package/bin/pikku-channels.ts
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
1
|
+
import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
3
2
|
import { InspectorState } from '@pikku/inspector'
|
|
4
3
|
import {
|
|
5
4
|
logCommandInfoAndTime,
|
|
6
|
-
logPikkuLogo,
|
|
7
|
-
PikkuCLIOptions,
|
|
8
5
|
serializeFileImports,
|
|
9
6
|
writeFileInDir,
|
|
10
|
-
} from '../src/utils.js'
|
|
11
|
-
import { inspectorGlob } from '../src/inspector-glob.js'
|
|
7
|
+
} from '../src/utils/utils.js'
|
|
12
8
|
|
|
13
9
|
export const pikkuChannels = async (
|
|
14
10
|
cliConfig: PikkuCLIConfig,
|
|
@@ -37,27 +33,3 @@ export const pikkuChannels = async (
|
|
|
37
33
|
}
|
|
38
34
|
)
|
|
39
35
|
}
|
|
40
|
-
|
|
41
|
-
async function action(cliOptions: PikkuCLIOptions): Promise<void> {
|
|
42
|
-
logPikkuLogo()
|
|
43
|
-
|
|
44
|
-
const cliConfig = await getPikkuCLIConfig(
|
|
45
|
-
cliOptions.config,
|
|
46
|
-
['rootDir', 'srcDirectories', 'httpRoutesFile'],
|
|
47
|
-
cliOptions.tags
|
|
48
|
-
)
|
|
49
|
-
const visitState = await inspectorGlob(
|
|
50
|
-
cliConfig.rootDir,
|
|
51
|
-
cliConfig.srcDirectories,
|
|
52
|
-
cliConfig.filters
|
|
53
|
-
)
|
|
54
|
-
await pikkuChannels(cliConfig, visitState)
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export const channels = (program: Command): void => {
|
|
58
|
-
program
|
|
59
|
-
.command('channels')
|
|
60
|
-
.description('Find all channels to import')
|
|
61
|
-
.option('-c | --config <string>', 'The path to pikku cli config file')
|
|
62
|
-
.action(action)
|
|
63
|
-
}
|
package/bin/pikku-fetch.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Command } from 'commander'
|
|
2
|
+
import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
3
|
+
import { serializeFetchWrapper } from '../src/serialize-fetch-wrapper.js'
|
|
2
4
|
import {
|
|
3
5
|
getFileImportRelativePath,
|
|
4
6
|
logCommandInfoAndTime,
|
|
5
7
|
logPikkuLogo,
|
|
6
8
|
PikkuCLIOptions,
|
|
7
9
|
writeFileInDir,
|
|
8
|
-
} from '../src/utils.js'
|
|
9
|
-
import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
10
|
-
import { serializeFetchWrapper } from '../src/serialize-fetch-wrapper.js'
|
|
10
|
+
} from '../src/utils/utils.js'
|
|
11
11
|
|
|
12
12
|
export const pikkuFetch = async ({
|
|
13
13
|
fetchFile,
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
1
|
+
import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
3
2
|
import { InspectorState } from '@pikku/inspector'
|
|
4
3
|
import {
|
|
5
4
|
getFileImportRelativePath,
|
|
6
5
|
getPikkuFilesAndMethods,
|
|
7
6
|
logCommandInfoAndTime,
|
|
8
|
-
logPikkuLogo,
|
|
9
7
|
PikkuCLIOptions,
|
|
10
8
|
writeFileInDir,
|
|
11
|
-
} from '../src/utils.js'
|
|
12
|
-
import { pikkuHTTP } from './pikku-http-routes.js'
|
|
13
|
-
import { inspectorGlob } from '../src/inspector-glob.js'
|
|
9
|
+
} from '../src/utils/utils.js'
|
|
14
10
|
import { serializePikkuTypes } from '../src/serialize-pikku-types.js'
|
|
15
11
|
|
|
16
12
|
export const pikkuFunctionTypes = async (
|
|
17
|
-
{
|
|
13
|
+
{
|
|
14
|
+
typesDeclarationFile: typesFile,
|
|
15
|
+
packageMappings,
|
|
16
|
+
rpcMapDeclarationFile,
|
|
17
|
+
}: PikkuCLIConfig,
|
|
18
18
|
options: PikkuCLIOptions,
|
|
19
19
|
visitState: InspectorState
|
|
20
20
|
) => {
|
|
@@ -42,43 +42,9 @@ export const pikkuFunctionTypes = async (
|
|
|
42
42
|
`import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(typesFile, singletonServicesType.typePath, packageMappings)}'`,
|
|
43
43
|
singletonServicesType.type,
|
|
44
44
|
`import type { ${sessionServicesType.type} } from '${getFileImportRelativePath(typesFile, sessionServicesType.typePath, packageMappings)}'`,
|
|
45
|
-
|
|
45
|
+
`import type { TypedPikkuRPC } from '${getFileImportRelativePath(typesFile, rpcMapDeclarationFile, packageMappings)}'`
|
|
46
46
|
)
|
|
47
47
|
await writeFileInDir(typesFile, content)
|
|
48
48
|
}
|
|
49
49
|
)
|
|
50
50
|
}
|
|
51
|
-
|
|
52
|
-
async function action(cliOptions: PikkuCLIOptions): Promise<void> {
|
|
53
|
-
logPikkuLogo()
|
|
54
|
-
|
|
55
|
-
const cliConfig = await getPikkuCLIConfig(
|
|
56
|
-
cliOptions.config,
|
|
57
|
-
['rootDir', 'srcDirectories', 'typesDeclarationFile'],
|
|
58
|
-
cliOptions.tags
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
const visitState = await inspectorGlob(
|
|
62
|
-
cliConfig.rootDir,
|
|
63
|
-
cliConfig.srcDirectories,
|
|
64
|
-
cliConfig.filters
|
|
65
|
-
)
|
|
66
|
-
await pikkuHTTP(cliConfig, visitState)
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export const functionTypes = (program: Command): void => {
|
|
70
|
-
program
|
|
71
|
-
.command('types')
|
|
72
|
-
.description('Generate the core API')
|
|
73
|
-
.option('-ct | --pikku-config-type', 'The type of your pikku config object')
|
|
74
|
-
.option(
|
|
75
|
-
'-ss | --singleton-services-factory-type',
|
|
76
|
-
'The type of your singleton services factory'
|
|
77
|
-
)
|
|
78
|
-
.option(
|
|
79
|
-
'-se | --session-services-factory-type',
|
|
80
|
-
'The type of your session services factory'
|
|
81
|
-
)
|
|
82
|
-
.option('-c | --config <string>', 'The path to pikku cli config file')
|
|
83
|
-
.action(action)
|
|
84
|
-
}
|
package/bin/pikku-functions.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
2
2
|
import { InspectorState } from '@pikku/inspector'
|
|
3
|
-
import {
|
|
4
|
-
logCommandInfoAndTime,
|
|
5
|
-
serializeFileImports,
|
|
6
|
-
writeFileInDir,
|
|
7
|
-
} from '../src/utils.js'
|
|
3
|
+
import { logCommandInfoAndTime, writeFileInDir } from '../src/utils/utils.js'
|
|
8
4
|
|
|
9
5
|
export const pikkuFunctions = async (
|
|
10
6
|
cliConfig: PikkuCLIConfig,
|
|
@@ -13,19 +9,10 @@ export const pikkuFunctions = async (
|
|
|
13
9
|
return await logCommandInfoAndTime(
|
|
14
10
|
'Finding Pikku functions',
|
|
15
11
|
'Found Pikku functions',
|
|
16
|
-
[
|
|
12
|
+
[true],
|
|
17
13
|
async () => {
|
|
18
|
-
const {
|
|
14
|
+
const { functionsMetaFile } = cliConfig
|
|
19
15
|
const { functions } = visitState
|
|
20
|
-
await writeFileInDir(
|
|
21
|
-
functionsFile,
|
|
22
|
-
serializeFileImports(
|
|
23
|
-
'addFunction',
|
|
24
|
-
functionsFile,
|
|
25
|
-
functions.files,
|
|
26
|
-
packageMappings
|
|
27
|
-
)
|
|
28
|
-
)
|
|
29
16
|
await writeFileInDir(
|
|
30
17
|
functionsMetaFile,
|
|
31
18
|
`import { pikkuState } from '@pikku/core'\npikkuState('function', 'meta', ${JSON.stringify(functions.meta, null, 2)})`
|
package/bin/pikku-http-map.ts
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
1
|
+
import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
3
2
|
import { InspectorState } from '@pikku/inspector'
|
|
4
|
-
import {
|
|
5
|
-
logCommandInfoAndTime,
|
|
6
|
-
logPikkuLogo,
|
|
7
|
-
PikkuCLIOptions,
|
|
8
|
-
writeFileInDir,
|
|
9
|
-
} from '../src/utils.js'
|
|
3
|
+
import { logCommandInfoAndTime, writeFileInDir } from '../src/utils/utils.js'
|
|
10
4
|
import { serializeTypedRoutesMap } from '../src/serialize-typed-http-map.js'
|
|
11
|
-
import { inspectorGlob } from '../src/inspector-glob.js'
|
|
12
5
|
|
|
13
6
|
export const pikkuHTTPMap = async (
|
|
14
7
|
{ httpRoutesMapDeclarationFile, packageMappings }: PikkuCLIConfig,
|
|
@@ -23,6 +16,7 @@ export const pikkuHTTPMap = async (
|
|
|
23
16
|
httpRoutesMapDeclarationFile,
|
|
24
17
|
packageMappings,
|
|
25
18
|
functions.typesMap,
|
|
19
|
+
functions.meta,
|
|
26
20
|
http.meta,
|
|
27
21
|
http.metaInputTypes
|
|
28
22
|
)
|
|
@@ -30,26 +24,3 @@ export const pikkuHTTPMap = async (
|
|
|
30
24
|
}
|
|
31
25
|
)
|
|
32
26
|
}
|
|
33
|
-
|
|
34
|
-
async function action(cliOptions: PikkuCLIOptions): Promise<void> {
|
|
35
|
-
logPikkuLogo()
|
|
36
|
-
const cliConfig = await getPikkuCLIConfig(
|
|
37
|
-
cliOptions.config,
|
|
38
|
-
['rootDir', 'srcDirectories', 'httpRoutesFile'],
|
|
39
|
-
cliOptions.tags
|
|
40
|
-
)
|
|
41
|
-
const visitState = await inspectorGlob(
|
|
42
|
-
cliConfig.rootDir,
|
|
43
|
-
cliConfig.srcDirectories,
|
|
44
|
-
cliConfig.filters
|
|
45
|
-
)
|
|
46
|
-
await pikkuHTTPMap(cliConfig, visitState)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export const routesMap = (program: Command): void => {
|
|
50
|
-
program
|
|
51
|
-
.command('map')
|
|
52
|
-
.description('Generate a map of all routes to aid in type checking')
|
|
53
|
-
.option('-c | --config <string>', 'The path to pikku cli config file')
|
|
54
|
-
.action(action)
|
|
55
|
-
}
|
package/bin/pikku-http-routes.ts
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
1
|
+
import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
3
2
|
import { InspectorState } from '@pikku/inspector'
|
|
4
3
|
import {
|
|
5
4
|
logCommandInfoAndTime,
|
|
6
|
-
logPikkuLogo,
|
|
7
|
-
PikkuCLIOptions,
|
|
8
5
|
serializeFileImports,
|
|
9
6
|
writeFileInDir,
|
|
10
|
-
} from '../src/utils.js'
|
|
11
|
-
import { inspectorGlob } from '../src/inspector-glob.js'
|
|
7
|
+
} from '../src/utils/utils.js'
|
|
12
8
|
|
|
13
9
|
export const pikkuHTTP = async (
|
|
14
10
|
cliConfig: PikkuCLIConfig,
|
|
@@ -37,27 +33,3 @@ export const pikkuHTTP = async (
|
|
|
37
33
|
}
|
|
38
34
|
)
|
|
39
35
|
}
|
|
40
|
-
|
|
41
|
-
async function action(cliOptions: PikkuCLIOptions): Promise<void> {
|
|
42
|
-
logPikkuLogo()
|
|
43
|
-
|
|
44
|
-
const cliConfig = await getPikkuCLIConfig(
|
|
45
|
-
cliOptions.config,
|
|
46
|
-
['rootDir', 'srcDirectories', 'httpRoutesFile'],
|
|
47
|
-
cliOptions.tags
|
|
48
|
-
)
|
|
49
|
-
const visitState = await inspectorGlob(
|
|
50
|
-
cliConfig.rootDir,
|
|
51
|
-
cliConfig.srcDirectories,
|
|
52
|
-
cliConfig.filters
|
|
53
|
-
)
|
|
54
|
-
await pikkuHTTP(cliConfig, visitState)
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export const routes = (program: Command): void => {
|
|
58
|
-
program
|
|
59
|
-
.command('routes')
|
|
60
|
-
.description('Find all routes to import')
|
|
61
|
-
.option('-c | --config <string>', 'The path to pikku cli config file')
|
|
62
|
-
.action(action)
|
|
63
|
-
}
|
package/bin/pikku-nextjs.ts
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
logPikkuLogo,
|
|
9
9
|
PikkuCLIOptions,
|
|
10
10
|
writeFileInDir,
|
|
11
|
-
} from '../src/utils.js'
|
|
11
|
+
} from '../src/utils/utils.js'
|
|
12
12
|
import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
13
13
|
import { InspectorState } from '@pikku/inspector'
|
|
14
14
|
import { inspectorGlob } from '../src/inspector-glob.js'
|
package/bin/pikku-openapi.ts
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
logPikkuLogo,
|
|
5
5
|
PikkuCLIOptions,
|
|
6
6
|
writeFileInDir,
|
|
7
|
-
} from '../src/utils.js'
|
|
7
|
+
} from '../src/utils/utils.js'
|
|
8
8
|
import { generateSchemas } from '../src/schema-generator.js'
|
|
9
9
|
import { generateOpenAPISpec } from '../src/openapi-spec-generator.js'
|
|
10
10
|
import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
@@ -26,10 +26,12 @@ export const pikkuOpenAPI = async (
|
|
|
26
26
|
}
|
|
27
27
|
const schemas = await generateSchemas(
|
|
28
28
|
tsconfig,
|
|
29
|
-
|
|
29
|
+
functions.typesMap,
|
|
30
|
+
functions.meta,
|
|
30
31
|
http.meta
|
|
31
32
|
)
|
|
32
33
|
const openAPISpec = await generateOpenAPISpec(
|
|
34
|
+
functions.meta,
|
|
33
35
|
http.meta,
|
|
34
36
|
schemas,
|
|
35
37
|
openAPI.additionalInfo
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
2
|
+
import { InspectorState } from '@pikku/inspector'
|
|
3
|
+
import { logCommandInfoAndTime, writeFileInDir } from '../src/utils/utils.js'
|
|
4
|
+
import { serializeTypedRPCMap } from '../src/serialize-typed-rpc-map.js'
|
|
5
|
+
|
|
6
|
+
export const pikkuRPCMap = async (
|
|
7
|
+
{ rpcMapDeclarationFile, packageMappings }: PikkuCLIConfig,
|
|
8
|
+
{ functions, rpc }: InspectorState
|
|
9
|
+
) => {
|
|
10
|
+
return await logCommandInfoAndTime(
|
|
11
|
+
'Creating RPC map',
|
|
12
|
+
'Created RPC map',
|
|
13
|
+
[rpc.files.size === 0],
|
|
14
|
+
async () => {
|
|
15
|
+
const content = serializeTypedRPCMap(
|
|
16
|
+
rpcMapDeclarationFile,
|
|
17
|
+
packageMappings,
|
|
18
|
+
functions.typesMap,
|
|
19
|
+
functions.meta,
|
|
20
|
+
rpc.meta
|
|
21
|
+
)
|
|
22
|
+
await writeFileInDir(rpcMapDeclarationFile, content)
|
|
23
|
+
}
|
|
24
|
+
)
|
|
25
|
+
}
|
package/bin/pikku-rpc.ts
CHANGED
|
@@ -1,20 +1,75 @@
|
|
|
1
1
|
import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
2
2
|
import { InspectorState } from '@pikku/inspector'
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
getFileImportRelativePath,
|
|
5
|
+
logCommandInfoAndTime,
|
|
6
|
+
writeFileInDir,
|
|
7
|
+
} from '../src/utils/utils.js'
|
|
8
|
+
|
|
9
|
+
export const serializeRPCImports = (
|
|
10
|
+
outputPath: string,
|
|
11
|
+
functionsMap: Map<string, { path: string; exportedName: string }>,
|
|
12
|
+
packageMappings: Record<string, string> = {}
|
|
13
|
+
) => {
|
|
14
|
+
const serializedImports: string[] = [
|
|
15
|
+
`/* Import and register RPCs */`,
|
|
16
|
+
`import { addFunction } from '@pikku/core'`,
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
const serializedRegistrations: string[] = []
|
|
20
|
+
|
|
21
|
+
// Sort by function name for consistent output
|
|
22
|
+
const sortedEntries = Array.from(functionsMap.entries()).sort((a, b) =>
|
|
23
|
+
a[0].localeCompare(b[0])
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
for (const [name, { path, exportedName }] of sortedEntries) {
|
|
27
|
+
const filePath = getFileImportRelativePath(
|
|
28
|
+
outputPath,
|
|
29
|
+
path,
|
|
30
|
+
packageMappings
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
// For directly exported functions, we can just import and register them
|
|
34
|
+
if (name === exportedName) {
|
|
35
|
+
serializedImports.push(`import { ${exportedName} } from '${filePath}'`)
|
|
36
|
+
serializedRegistrations.push(
|
|
37
|
+
`addFunction('${name}', { func: ${exportedName} })`
|
|
38
|
+
)
|
|
39
|
+
}
|
|
40
|
+
// For renamed functions, we need to import and alias them
|
|
41
|
+
else {
|
|
42
|
+
serializedImports.push(
|
|
43
|
+
`import { ${exportedName} as ${name} } from '${filePath}'`
|
|
44
|
+
)
|
|
45
|
+
serializedRegistrations.push(`addFunction('${name}', ${name})`)
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Add a blank line between imports and registrations
|
|
50
|
+
if (serializedImports.length > 0 && serializedRegistrations.length > 0) {
|
|
51
|
+
serializedImports.push('')
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Combine the imports and registrations
|
|
55
|
+
return [...serializedImports, ...serializedRegistrations].join('\n')
|
|
56
|
+
}
|
|
4
57
|
|
|
5
58
|
export const pikkuRPC = async (
|
|
6
|
-
|
|
7
|
-
|
|
59
|
+
{ rpcFile, rpcMetaFile, packageMappings }: PikkuCLIConfig,
|
|
60
|
+
{ rpc }: InspectorState
|
|
8
61
|
) => {
|
|
9
62
|
return await logCommandInfoAndTime(
|
|
10
63
|
'Finding RPCs tasks',
|
|
11
|
-
'Found
|
|
12
|
-
[
|
|
64
|
+
'Found RPCs',
|
|
65
|
+
[rpc.files.size === 0],
|
|
13
66
|
async () => {
|
|
14
|
-
const { rpcFile } = cliConfig
|
|
15
|
-
const { rpc } = visitState
|
|
16
67
|
await writeFileInDir(
|
|
17
68
|
rpcFile,
|
|
69
|
+
serializeRPCImports(rpcFile, rpc.files, packageMappings)
|
|
70
|
+
)
|
|
71
|
+
await writeFileInDir(
|
|
72
|
+
rpcMetaFile,
|
|
18
73
|
`import { pikkuState } from '@pikku/core'\npikkuState('rpc', 'meta', ${JSON.stringify(rpc.meta, null, 2)})`
|
|
19
74
|
)
|
|
20
75
|
}
|
package/bin/pikku-scheduler.ts
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
1
|
+
import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
3
2
|
import { InspectorState } from '@pikku/inspector'
|
|
4
3
|
import {
|
|
5
4
|
logCommandInfoAndTime,
|
|
6
|
-
logPikkuLogo,
|
|
7
|
-
PikkuCLIOptions,
|
|
8
5
|
serializeFileImports,
|
|
9
6
|
writeFileInDir,
|
|
10
|
-
} from '../src/utils.js'
|
|
7
|
+
} from '../src/utils/utils.js'
|
|
11
8
|
import { serializeSchedulerMeta } from '../src/serialize-scheduler-meta.js'
|
|
12
|
-
import { inspectorGlob } from '../src/inspector-glob.js'
|
|
13
9
|
|
|
14
10
|
export const pikkuScheduler = async (
|
|
15
11
|
cliConfig: PikkuCLIConfig,
|
|
@@ -38,27 +34,3 @@ export const pikkuScheduler = async (
|
|
|
38
34
|
}
|
|
39
35
|
)
|
|
40
36
|
}
|
|
41
|
-
|
|
42
|
-
async function action(options: PikkuCLIOptions): Promise<void> {
|
|
43
|
-
logPikkuLogo()
|
|
44
|
-
|
|
45
|
-
const cliConfig = await getPikkuCLIConfig(
|
|
46
|
-
options.config,
|
|
47
|
-
['rootDir', 'srcDirectories', 'httpRoutesFile'],
|
|
48
|
-
options.tags
|
|
49
|
-
)
|
|
50
|
-
const visitState = await inspectorGlob(
|
|
51
|
-
cliConfig.rootDir,
|
|
52
|
-
cliConfig.srcDirectories,
|
|
53
|
-
cliConfig.filters
|
|
54
|
-
)
|
|
55
|
-
await pikkuScheduler(cliConfig, visitState)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export const schedules = (program: Command): void => {
|
|
59
|
-
program
|
|
60
|
-
.command('scheduler')
|
|
61
|
-
.description('Find all scheduled tasks to import')
|
|
62
|
-
.option('-c | --config <string>', 'The path to pikku cli config file')
|
|
63
|
-
.action(action)
|
|
64
|
-
}
|
package/bin/pikku-schemas.ts
CHANGED
|
@@ -3,12 +3,12 @@ import { saveSchemas, generateSchemas } from '../src/schema-generator.js'
|
|
|
3
3
|
|
|
4
4
|
import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
5
5
|
import { InspectorState } from '@pikku/inspector'
|
|
6
|
-
import { logCommandInfoAndTime, logPikkuLogo } from '../src/utils.js'
|
|
6
|
+
import { logCommandInfoAndTime, logPikkuLogo } from '../src/utils/utils.js'
|
|
7
7
|
import { inspectorGlob } from '../src/inspector-glob.js'
|
|
8
8
|
|
|
9
9
|
export const pikkuSchemas = async (
|
|
10
10
|
{ tsconfig, schemaDirectory, supportsImportAttributes }: PikkuCLIConfig,
|
|
11
|
-
{ functions, http
|
|
11
|
+
{ functions, http }: InspectorState
|
|
12
12
|
) => {
|
|
13
13
|
return await logCommandInfoAndTime(
|
|
14
14
|
'Creating schemas',
|
|
@@ -17,14 +17,15 @@ export const pikkuSchemas = async (
|
|
|
17
17
|
async () => {
|
|
18
18
|
const schemas = await generateSchemas(
|
|
19
19
|
tsconfig,
|
|
20
|
-
|
|
20
|
+
functions.typesMap,
|
|
21
|
+
functions.meta,
|
|
21
22
|
http.meta
|
|
22
23
|
)
|
|
23
24
|
await saveSchemas(
|
|
24
25
|
schemaDirectory,
|
|
25
26
|
schemas,
|
|
26
27
|
functions.typesMap,
|
|
27
|
-
|
|
28
|
+
functions.meta,
|
|
28
29
|
supportsImportAttributes
|
|
29
30
|
)
|
|
30
31
|
}
|
package/bin/pikku-websocket.ts
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
logPikkuLogo,
|
|
6
6
|
PikkuCLIOptions,
|
|
7
7
|
writeFileInDir,
|
|
8
|
-
} from '../src/utils.js'
|
|
8
|
+
} from '../src/utils/utils.js'
|
|
9
9
|
import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
|
|
10
10
|
import { serializeWebsocketWrapper } from '../src/serialize-websocket-wrapper.js'
|
|
11
11
|
|
package/bin/pikku.ts
CHANGED
|
@@ -1,26 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander'
|
|
3
3
|
import { schemas } from './pikku-schemas.js'
|
|
4
|
-
import { routes } from './pikku-http-routes.js'
|
|
5
4
|
import { nextjs } from './pikku-nextjs.js'
|
|
6
5
|
import { all } from './pikku-all.js'
|
|
7
|
-
import { functionTypes } from './pikku-function-types.js'
|
|
8
|
-
import { routesMap } from './pikku-http-map.js'
|
|
9
6
|
import { fetch } from './pikku-fetch.js'
|
|
10
|
-
import { channels } from './pikku-channels.js'
|
|
11
|
-
import { schedules } from './pikku-scheduler.js'
|
|
12
7
|
|
|
13
8
|
const program = new Command('pikku')
|
|
14
9
|
program.usage('[command]')
|
|
15
10
|
|
|
16
11
|
all(program)
|
|
17
|
-
routes(program)
|
|
18
|
-
routesMap(program)
|
|
19
|
-
functionTypes(program)
|
|
20
12
|
schemas(program)
|
|
21
13
|
nextjs(program)
|
|
22
14
|
fetch(program)
|
|
23
|
-
channels(program)
|
|
24
|
-
schedules(program)
|
|
25
15
|
|
|
26
16
|
program.parse(process.argv)
|
package/dist/bin/pikku-all.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import { PikkuCLIOptions } from '../src/utils.js';
|
|
2
|
+
import { PikkuCLIOptions } from '../src/utils/utils.js';
|
|
3
3
|
export declare const action: (options: PikkuCLIOptions) => Promise<void>;
|
|
4
4
|
export declare const all: (program: Command) => void;
|
package/dist/bin/pikku-all.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getFileImportRelativePath, logInfo, logPikkuLogo, writeFileInDir, } from '../src/utils.js';
|
|
1
|
+
import { getFileImportRelativePath, logInfo, logPikkuLogo, writeFileInDir, } from '../src/utils/utils.js';
|
|
2
2
|
import { getPikkuCLIConfig } from '../src/pikku-cli-config.js';
|
|
3
3
|
import { pikkuHTTP } from './pikku-http-routes.js';
|
|
4
4
|
import { pikkuFunctionTypes } from './pikku-function-types.js';
|
|
@@ -16,6 +16,7 @@ import { inspectorGlob } from '../src/inspector-glob.js';
|
|
|
16
16
|
import chokidar from 'chokidar';
|
|
17
17
|
import { pikkuFunctions } from './pikku-functions.js';
|
|
18
18
|
import { pikkuRPC } from './pikku-rpc.js';
|
|
19
|
+
import { pikkuRPCMap } from './pikku-rpc-map.js';
|
|
19
20
|
const runAll = async (cliConfig, options) => {
|
|
20
21
|
const metaImports = [];
|
|
21
22
|
const imports = [];
|
|
@@ -47,7 +48,9 @@ const runAll = async (cliConfig, options) => {
|
|
|
47
48
|
addImport(cliConfig.functionsMetaFile, 'meta');
|
|
48
49
|
addImport(cliConfig.functionsFile, 'events');
|
|
49
50
|
await pikkuRPC(cliConfig, visitState);
|
|
50
|
-
|
|
51
|
+
await pikkuRPCMap(cliConfig, visitState);
|
|
52
|
+
addImport(cliConfig.rpcMetaFile, 'meta');
|
|
53
|
+
addImport(cliConfig.rpcFile, 'events');
|
|
51
54
|
const routes = await pikkuHTTP(cliConfig, visitState);
|
|
52
55
|
if (routes) {
|
|
53
56
|
await pikkuHTTPMap(cliConfig, visitState);
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
1
|
import { PikkuCLIConfig } from '../src/pikku-cli-config.js';
|
|
3
2
|
import { InspectorState } from '@pikku/inspector';
|
|
4
3
|
export declare const pikkuChannelsMap: ({ channelsMapDeclarationFile, packageMappings }: PikkuCLIConfig, state: InspectorState) => Promise<boolean>;
|
|
5
|
-
export declare const channelsMap: (program: Command) => void;
|