@weotro/dx 0.1.19 → 0.2.0

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 (71) hide show
  1. package/README.md +77 -718
  2. package/bin/dx.js +100 -173
  3. package/example/.env.development +1 -0
  4. package/example/README.md +24 -0
  5. package/example/dx/scripts/build +2 -0
  6. package/example/dx/scripts/db +2 -0
  7. package/example/dx/scripts/deploy +2 -0
  8. package/example/dx/scripts/setup +2 -0
  9. package/example/dx/scripts/start +12 -0
  10. package/example/dx/scripts/test +2 -0
  11. package/lib/env.js +40 -257
  12. package/lib/logger.js +5 -238
  13. package/lib/setup.js +72 -0
  14. package/package.json +27 -13
  15. package/skills/ask_3th/SKILL.md +2 -0
  16. package/skills/delegate_3th/SKILL.md +4 -2
  17. package/skills/delegate_3th/scripts/delegate_3th.py +37 -41
  18. package/skills/delegate_3th/scripts/test_delegate_3th.py +43 -17
  19. package/bin/dx-with-version-env.js +0 -8
  20. package/lib/artifact-deploy/artifact-builder.js +0 -144
  21. package/lib/artifact-deploy/config.js +0 -180
  22. package/lib/artifact-deploy/remote-script.js +0 -301
  23. package/lib/artifact-deploy/remote-transport.js +0 -86
  24. package/lib/artifact-deploy.js +0 -70
  25. package/lib/backend-artifact-deploy/artifact-builder.js +0 -267
  26. package/lib/backend-artifact-deploy/config.js +0 -218
  27. package/lib/backend-artifact-deploy/path-utils.js +0 -18
  28. package/lib/backend-artifact-deploy/remote-phases.js +0 -14
  29. package/lib/backend-artifact-deploy/remote-result.js +0 -44
  30. package/lib/backend-artifact-deploy/remote-script.js +0 -507
  31. package/lib/backend-artifact-deploy/remote-transport.js +0 -123
  32. package/lib/backend-artifact-deploy/rollback.js +0 -5
  33. package/lib/backend-artifact-deploy/runtime-package.js +0 -46
  34. package/lib/backend-artifact-deploy.js +0 -91
  35. package/lib/backend-package.js +0 -674
  36. package/lib/cli/args.js +0 -38
  37. package/lib/cli/command-result.js +0 -1
  38. package/lib/cli/commands/contracts.js +0 -60
  39. package/lib/cli/commands/core.js +0 -533
  40. package/lib/cli/commands/db.js +0 -231
  41. package/lib/cli/commands/deploy.js +0 -175
  42. package/lib/cli/commands/env.js +0 -120
  43. package/lib/cli/commands/export.js +0 -39
  44. package/lib/cli/commands/package.js +0 -22
  45. package/lib/cli/commands/release.js +0 -55
  46. package/lib/cli/commands/stack.js +0 -427
  47. package/lib/cli/commands/start.js +0 -58
  48. package/lib/cli/commands/worktree.js +0 -145
  49. package/lib/cli/dx-cli.js +0 -1072
  50. package/lib/cli/flags.js +0 -123
  51. package/lib/cli/help-model.js +0 -222
  52. package/lib/cli/help-renderer.js +0 -137
  53. package/lib/cli/help-schema.js +0 -552
  54. package/lib/cli/help.js +0 -141
  55. package/lib/cli/index.js +0 -4
  56. package/lib/cli/nx-command.js +0 -13
  57. package/lib/confirm.js +0 -213
  58. package/lib/env-policy.js +0 -134
  59. package/lib/env-profile.js +0 -531
  60. package/lib/exec.js +0 -692
  61. package/lib/nx-ignore.js +0 -45
  62. package/lib/run-with-version-env.js +0 -163
  63. package/lib/sdk-build.js +0 -424
  64. package/lib/start-dev.js +0 -401
  65. package/lib/telegram-webhook.js +0 -431
  66. package/lib/validate-env.js +0 -317
  67. package/lib/vercel-deploy.js +0 -549
  68. package/lib/worktree.js +0 -1052
  69. package/skills/delegate_3th/scripts/__pycache__/delegate_3th.cpython-314.pyc +0 -0
  70. package/skills/delegate_3th/scripts/__pycache__/delegate_cc.cpython-314.pyc +0 -0
  71. package/skills/delegate_3th/scripts/__pycache__/test_delegate_cc.cpython-314.pyc +0 -0
@@ -1,46 +0,0 @@
1
- const UNSUPPORTED_LOCAL_DEP_PATTERN = /^(workspace:|file:|link:)/
2
- const REQUIRED_DEPENDENCIES = ['prisma', 'tslib', 'dotenv-cli', '@prisma/adapter-pg']
3
-
4
- function assertSupportedDependencies(dependencies = {}) {
5
- for (const [name, version] of Object.entries(dependencies)) {
6
- if (typeof version !== 'string') continue
7
- if (UNSUPPORTED_LOCAL_DEP_PATTERN.test(version)) {
8
- throw new Error(`检测到不支持的本地依赖引用: ${name} -> ${version}`)
9
- }
10
- }
11
- }
12
-
13
- export function createRuntimePackage({ appPackage, rootPackage }) {
14
- const runtimeDependencies = { ...(appPackage?.dependencies || {}) }
15
- const appDevDependencies = appPackage?.devDependencies || {}
16
- const rootDependencies = rootPackage?.dependencies || {}
17
- const rootDevDependencies = rootPackage?.devDependencies || {}
18
-
19
- for (const dependencyName of REQUIRED_DEPENDENCIES) {
20
- if (!runtimeDependencies[dependencyName]) {
21
- runtimeDependencies[dependencyName] =
22
- appDevDependencies[dependencyName]
23
- || rootDependencies[dependencyName]
24
- || rootDevDependencies[dependencyName]
25
- }
26
- }
27
-
28
- assertSupportedDependencies(runtimeDependencies)
29
-
30
- const runtimePackage = {
31
- name: appPackage?.name,
32
- version: appPackage?.version,
33
- dependencies: runtimeDependencies,
34
- }
35
-
36
- if (appPackage?.private !== undefined) runtimePackage.private = appPackage.private
37
- if (appPackage?.type) runtimePackage.type = appPackage.type
38
- if (rootPackage?.packageManager) runtimePackage.packageManager = rootPackage.packageManager
39
-
40
- const nodeEngine = rootPackage?.engines?.node || appPackage?.engines?.node
41
- if (nodeEngine) {
42
- runtimePackage.engines = { node: nodeEngine }
43
- }
44
-
45
- return runtimePackage
46
- }
@@ -1,91 +0,0 @@
1
- import { buildBackendArtifact } from './backend-artifact-deploy/artifact-builder.js'
2
- import { resolveBackendDeployConfig } from './backend-artifact-deploy/config.js'
3
- import { deployBackendArtifactRemotely } from './backend-artifact-deploy/remote-transport.js'
4
- import { logger as defaultLogger } from './logger.js'
5
- import { access } from 'node:fs/promises'
6
- import { basename, resolve } from 'node:path'
7
-
8
- export async function loadBackendArtifact(config, artifactPath, deps = {}) {
9
- const ensureReadable = deps.ensureArtifactReadable || access
10
- const bundlePath = resolve(config.projectRoot, artifactPath)
11
- await ensureReadable(bundlePath)
12
-
13
- const bundleFile = basename(bundlePath)
14
- const prefix = `${config.artifact.bundleName}-v`
15
- if (!bundleFile.startsWith(prefix) || !bundleFile.endsWith('.tgz')) {
16
- throw new Error(`制品文件名必须匹配 ${prefix}<version>-<timestamp>.tgz`)
17
- }
18
-
19
- const versionTag = bundleFile.slice(prefix.length, -'.tgz'.length)
20
- if (!versionTag) throw new Error('无法从制品文件名解析版本')
21
-
22
- return {
23
- bundlePath,
24
- versionName: `backend-v${versionTag}`,
25
- }
26
- }
27
-
28
- function printSuccessfulDeploySummary(result, logger) {
29
- const summary = result?.summary
30
- if (!summary) return
31
-
32
- logger.success(`后端部署成功: ${summary.releaseName || 'unknown-release'}`)
33
- if (summary.currentRelease) {
34
- logger.info(`[deploy-summary] current=${summary.currentRelease}`)
35
- }
36
- if (summary.serviceName || summary.serviceStatus) {
37
- logger.info(
38
- `[deploy-summary] service=${summary.serviceName || 'unknown'} status=${summary.serviceStatus || 'unknown'}`,
39
- )
40
- }
41
- if (summary.appEnv || summary.nodeEnv) {
42
- logger.info(
43
- `[deploy-summary] APP_ENV=${summary.appEnv || '<empty>'} NODE_ENV=${summary.nodeEnv || '<empty>'}`,
44
- )
45
- }
46
- if (summary.healthUrl) {
47
- logger.info(`[deploy-summary] health=${summary.healthUrl}`)
48
- }
49
- }
50
-
51
- export async function runBackendArtifactDeploy({
52
- cli,
53
- target,
54
- args,
55
- environment,
56
- deps = {},
57
- }) {
58
- const logger = deps.logger || defaultLogger
59
- const resolveConfig = deps.resolveConfig || resolveBackendDeployConfig
60
- const buildArtifact = deps.buildArtifact || buildBackendArtifact
61
- const deployRemotely =
62
- deps.deployRemotely || deployBackendArtifactRemotely
63
-
64
- const targetConfig = cli?.commands?.deploy?.[target]
65
- const config = resolveConfig({
66
- cli,
67
- targetConfig,
68
- environment,
69
- flags: cli?.flags || {},
70
- args,
71
- })
72
-
73
- const artifactPath = cli?.flags?.artifact
74
- if (cli?.flags?.buildOnly && artifactPath) {
75
- throw new Error('--build-only 与 --artifact 不能同时使用')
76
- }
77
-
78
- const loadArtifact = deps.loadArtifact || loadBackendArtifact
79
- const bundle = artifactPath
80
- ? await loadArtifact(config, artifactPath, deps)
81
- : await buildArtifact(config, deps)
82
- if (cli?.flags?.buildOnly) {
83
- return bundle
84
- }
85
-
86
- const result = await deployRemotely(config, bundle, deps)
87
- if (result?.ok) {
88
- printSuccessfulDeploySummary(result, logger)
89
- }
90
- return result
91
- }