varlock 0.3.0 → 0.4.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 (60) hide show
  1. package/README.md +23 -10
  2. package/dist/chunk-36LTSUR6.js +48 -0
  3. package/dist/chunk-36LTSUR6.js.map +1 -0
  4. package/dist/{chunk-KKPD7AYU.js → chunk-4DZ3IHF6.js} +4 -4
  5. package/dist/{chunk-KKPD7AYU.js.map → chunk-4DZ3IHF6.js.map} +1 -1
  6. package/dist/{chunk-MXZI2FC6.js → chunk-5HF5TS2C.js} +5 -5
  7. package/dist/{chunk-MXZI2FC6.js.map → chunk-5HF5TS2C.js.map} +1 -1
  8. package/dist/{chunk-JDMZWNQA.js → chunk-ALNELNTO.js} +6 -6
  9. package/dist/{chunk-JDMZWNQA.js.map → chunk-ALNELNTO.js.map} +1 -1
  10. package/dist/{chunk-IG5PPVD7.js → chunk-BS7P3FRR.js} +5 -5
  11. package/dist/{chunk-IG5PPVD7.js.map → chunk-BS7P3FRR.js.map} +1 -1
  12. package/dist/{chunk-WZW7QS6M.js → chunk-CBP4M7BN.js} +314 -27
  13. package/dist/chunk-CBP4M7BN.js.map +1 -0
  14. package/dist/{chunk-LZ52O5WU.js → chunk-EDSWMPIV.js} +7 -18
  15. package/dist/chunk-EDSWMPIV.js.map +1 -0
  16. package/dist/{chunk-26ICEAKS.js → chunk-F5WNDO7I.js} +5 -5
  17. package/dist/{chunk-26ICEAKS.js.map → chunk-F5WNDO7I.js.map} +1 -1
  18. package/dist/{chunk-GEJNYKR4.js → chunk-HRNVJUR5.js} +3 -3
  19. package/dist/{chunk-GEJNYKR4.js.map → chunk-HRNVJUR5.js.map} +1 -1
  20. package/dist/{chunk-WDC5CEKD.js → chunk-QNKJGOQ6.js} +5 -5
  21. package/dist/{chunk-WDC5CEKD.js.map → chunk-QNKJGOQ6.js.map} +1 -1
  22. package/dist/{chunk-VQ5I7WMP.js → chunk-VKRGHRPK.js} +3 -3
  23. package/dist/{chunk-VQ5I7WMP.js.map → chunk-VKRGHRPK.js.map} +1 -1
  24. package/dist/{chunk-MHIFZAPA.js → chunk-WIIXKZ3N.js} +7 -7
  25. package/dist/{chunk-MHIFZAPA.js.map → chunk-WIIXKZ3N.js.map} +1 -1
  26. package/dist/{chunk-TLXFVH7P.js → chunk-YFP6VA2U.js} +4 -4
  27. package/dist/{chunk-TLXFVH7P.js.map → chunk-YFP6VA2U.js.map} +1 -1
  28. package/dist/cli/cli-executable.js +24 -22
  29. package/dist/cli/cli-executable.js.map +1 -1
  30. package/dist/config-item-GN5AUR45.js +5 -0
  31. package/dist/{config-item-2AL7WF23.js.map → config-item-GN5AUR45.js.map} +1 -1
  32. package/dist/{env-graph-C8s2oqOJ.d.ts → env-graph-COORmJlH.d.ts} +59 -0
  33. package/dist/index.d.ts +2 -2
  34. package/dist/index.js +4 -4
  35. package/dist/init.command-FMHXUGDI.js +12 -0
  36. package/dist/{init.command-J4HZL3PB.js.map → init.command-FMHXUGDI.js.map} +1 -1
  37. package/dist/load.command-6I2D5BPL.js +11 -0
  38. package/dist/{load.command-6DAP7LEX.js.map → load.command-6I2D5BPL.js.map} +1 -1
  39. package/dist/plugin-lib.d.ts +2 -2
  40. package/dist/printenv.command-TROZTZ26.js +12 -0
  41. package/dist/{printenv.command-7B7SZ2EF.js.map → printenv.command-TROZTZ26.js.map} +1 -1
  42. package/dist/run.command-4OJ6MBP6.js +12 -0
  43. package/dist/{run.command-HVV6XXDR.js.map → run.command-4OJ6MBP6.js.map} +1 -1
  44. package/dist/runtime/env.d.ts +1 -1
  45. package/dist/scan.command-YRNAKUZT.js +13 -0
  46. package/dist/{scan.command-Q33VJOPD.js.map → scan.command-YRNAKUZT.js.map} +1 -1
  47. package/dist/telemetry.command-UZQSUYAY.js +11 -0
  48. package/dist/{telemetry.command-HOJDUCKG.js.map → telemetry.command-UZQSUYAY.js.map} +1 -1
  49. package/dist/typegen.command-V4MATON4.js +12 -0
  50. package/dist/typegen.command-V4MATON4.js.map +1 -0
  51. package/package.json +11 -11
  52. package/dist/chunk-LZ52O5WU.js.map +0 -1
  53. package/dist/chunk-WZW7QS6M.js.map +0 -1
  54. package/dist/config-item-2AL7WF23.js +0 -5
  55. package/dist/init.command-J4HZL3PB.js +0 -12
  56. package/dist/load.command-6DAP7LEX.js +0 -11
  57. package/dist/printenv.command-7B7SZ2EF.js +0 -12
  58. package/dist/run.command-HVV6XXDR.js +0 -12
  59. package/dist/scan.command-Q33VJOPD.js +0 -13
  60. package/dist/telemetry.command-HOJDUCKG.js +0 -11
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"typegen.command-V4MATON4.js"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "varlock",
3
- "version": "0.3.0",
4
- "description": "The unified env var toolkit - load, validate, and secure your environment variables",
3
+ "version": "0.4.0",
4
+ "description": "AI-safe .env files: Schemas for agents, Secrets for humans.",
5
5
  "main": "index.js",
6
6
  "type": "module",
7
7
  "author": "dmno-dev",
@@ -107,13 +107,13 @@
107
107
  "devDependencies": {
108
108
  "@clack/core": "^1.0.0",
109
109
  "@clack/prompts": "^1.0.0",
110
- "@env-spec/parser": "workspace:*",
111
- "@env-spec/utils": "workspace:*",
112
- "@sindresorhus/is": "catalog:",
113
- "@types/node": "catalog:",
110
+ "@env-spec/parser": "0.1.1",
111
+ "@env-spec/utils": "0.0.0",
112
+ "@sindresorhus/is": "^7.2.0",
113
+ "@types/node": "25.3.2",
114
114
  "@types/semver": "^7.7.1",
115
- "@varlock/ci-env-info": "workspace:^",
116
- "ansis": "catalog:",
115
+ "@varlock/ci-env-info": "^0.0.1",
116
+ "ansis": "^4.2.0",
117
117
  "browser-or-node": "^3.0.0",
118
118
  "ci-info": "^4.3.1",
119
119
  "exit-hook": "^5.1.0",
@@ -121,9 +121,9 @@
121
121
  "is-docker": "^4.0.0",
122
122
  "is-unicode-supported": "^2.1.0",
123
123
  "is-wsl": "^3.1.0",
124
- "outdent": "catalog:",
124
+ "outdent": "^0.8.0",
125
125
  "semver": "^7.7.4",
126
- "tsup": "catalog:",
127
- "vitest": "catalog:"
126
+ "tsup": "^8.5.1",
127
+ "vitest": "^4.0.18"
128
128
  }
129
129
  }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/commands/load.command.ts"],"names":[],"mappings":"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","file":"chunk-LZ52O5WU.js","sourcesContent":["import { define } from 'gunshi';\nimport _ from '@env-spec/utils/my-dash';\n\nimport { loadVarlockEnvGraph } from '../../lib/load-graph';\nimport { getItemSummary } from '../../lib/formatting';\nimport { checkForConfigErrors, checkForNoEnvFiles, checkForSchemaErrors } from '../helpers/error-checks';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\nimport path from 'node:path';\nimport { FileBasedDataSource } from '../../env-graph';\n\nexport const commandSpec = define({\n name: 'load',\n description: 'Load env according to schema and resolve values',\n args: {\n format: {\n type: 'enum',\n short: 'f',\n choices: ['pretty', 'json', 'env', 'json-full'],\n description: 'Format of output',\n default: 'pretty',\n },\n compact: {\n type: 'boolean',\n description: 'Use compact format (for json-full: no indentation, for env: skip undefined values)',\n },\n 'show-all': {\n type: 'boolean',\n description: 'When load is failing, show all items rather than only failing items',\n },\n env: {\n type: 'string',\n description: 'Set the environment (e.g., production, development, etc) - will be overridden by @currentEnv in the schema if present',\n },\n path: {\n type: 'string',\n short: 'p',\n description: 'Path to a specific .env file or directory to use as the entry point',\n },\n },\n examples: `\nLoads and validates environment variables according to your .env files, and prints the results.\nUseful for debugging locally, and in CI to print out a summary of env vars.\n\nExamples:\n varlock load # Load and validate with pretty output\n varlock load --format json # Output in JSON format\n varlock load --show-all # Show all items when validation fails\n varlock load --path .env.prod # Load from a specific .env file\n varlock looad --compact # Use compact format - skips undefined values, no indentation for json-full\n varlock load --env production # Load for a specific environment (⚠️ ignored if using @currentEnv!)\n`.trim(),\n});\n\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n const { format, compact, 'show-all': showAll } = ctx.values;\n\n const envGraph = await loadVarlockEnvGraph({\n currentEnvFallback: ctx.values.env,\n entryFilePath: ctx.values.path,\n });\n checkForSchemaErrors(envGraph);\n checkForNoEnvFiles(envGraph);\n\n if (!envGraph.rootDataSource) throw new Error('expected root data source to be set');\n\n await envGraph.resolveEnvValues();\n\n // ideally we could be smarter about generating types without needing to resolve values\n // but for now the decorators are all resolved as part of the general resolution process\n const generateTypesDecs = envGraph.getRootDecFns('generateTypes');\n for (const generateTypesDec of generateTypesDecs) {\n const typeGenSettings = await generateTypesDec.resolve();\n\n // we skip generating types if `@generateTypes` was not in the main file\n // unless the `executeWhenImported` flag is set\n if (generateTypesDec.dataSource.isImport && !typeGenSettings.obj.executeWhenImported) continue;\n\n if (!typeGenSettings.obj.lang) throw new Error('@generateTypes - must set `lang` arg');\n if (typeGenSettings.obj.lang !== 'ts') throw new Error(`@generateTypes - unsupported language: ${typeGenSettings.obj.lang}`);\n if (!typeGenSettings.obj.path) throw new Error('@generateTypes - must set `path` arg');\n if (!_.isString(typeGenSettings.obj.path)) throw new Error('@generateTypes - `path` arg must be a string');\n\n const outputPath = generateTypesDec.dataSource instanceof FileBasedDataSource\n ? path.resolve(generateTypesDec.dataSource.fullPath, '..', typeGenSettings.obj.path)\n : typeGenSettings.obj.path;\n\n await envGraph.generateTypes(typeGenSettings.obj.lang, outputPath);\n }\n\n checkForConfigErrors(envGraph, { showAll });\n\n if (format === 'pretty') {\n for (const itemKey of envGraph.sortedConfigKeys) {\n const item = envGraph.configSchema[itemKey];\n console.log(getItemSummary(item));\n }\n } else if (format === 'json') {\n console.log(JSON.stringify(envGraph.getResolvedEnvObject(), null, 2));\n } else if (format === 'json-full') {\n const indent = compact ? 0 : 2;\n console.log(JSON.stringify(envGraph.getSerializedGraph(), null, indent));\n } else if (format === 'env') {\n const resolvedEnv = envGraph.getResolvedEnvObject();\n const skipUndefined = compact === true;\n\n for (const key in resolvedEnv) {\n const value = resolvedEnv[key];\n\n if (value === undefined && skipUndefined) {\n continue;\n }\n\n let strValue: string;\n if (value === undefined) {\n strValue = '';\n } else if (typeof value === 'string') {\n strValue = `\"${value.replaceAll('\"', '\\\\\"').replaceAll('\\n', '\\\\n')}\"`;\n } else {\n strValue = JSON.stringify(value);\n }\n console.log(`${key}=${strValue}`);\n }\n } else {\n throw new Error(`Unknown format: ${format}`);\n }\n\n // const resolvedEnv = envGraph.getResolvedEnvObject();\n // console.log(resolvedEnv);\n};\n"]}