dagger-env 0.6.0 → 0.6.2

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/README.md CHANGED
@@ -23,8 +23,8 @@ npm install dagger-env zod
23
23
  ## Quick Start
24
24
 
25
25
  ```typescript
26
- import { z } from 'zod/v4'
27
26
  import { createDaggerEnv } from 'dagger-env'
27
+ import { z } from 'zod/v4'
28
28
 
29
29
  // Define your environment configuration
30
30
  const myDaggerEnv = createDaggerEnv({
@@ -44,7 +44,7 @@ const myDaggerEnv = createDaggerEnv({
44
44
  secretPresets: {
45
45
  api: ['API_TOKEN', 'DATABASE_URL'],
46
46
  cache: ['REDIS_URL'],
47
- } as const,
47
+ },
48
48
  derivedEnvVars: {
49
49
  API_TOKEN: {
50
50
  API_BASE_URL: 'https://api.example.com',
@@ -53,18 +53,20 @@ const myDaggerEnv = createDaggerEnv({
53
53
  DATABASE_URL: {
54
54
  DB_POOL_SIZE: '10',
55
55
  },
56
- } as const,
56
+ },
57
57
  })
58
+ ```
58
59
 
60
+ ```typescript
59
61
  // Use in your Dagger module
60
- import { dag, Container, object, func, Secret } from '@dagger.io/dagger'
62
+ import { Container, dag, func, object, Secret } from '@dagger.io/dagger'
61
63
 
62
64
  @object()
63
65
  export class MyModule {
64
66
  @func()
65
67
  async build(options: Secret): Promise<Container> {
66
68
  const opts = await myDaggerEnv.parseDaggerOptions(options)
67
- const withEnv = await myDaggerEnv.getWithEnv(options, ['api'], ['REDIS_URL'])
69
+ const { withEnv } = await myDaggerEnv.getWithEnv(options, ['api'], ['REDIS_URL'])
68
70
 
69
71
  return withEnv(dag.container().from('node:18')).withExec(['npm', 'run', 'build']).sync()
70
72
  }
@@ -94,8 +96,8 @@ const myDaggerEnv = createDaggerEnv({
94
96
  }),
95
97
  secretPresets: {
96
98
  api: ['API_TOKEN'],
97
- } as const,
98
- derivedEnvVars: {} as const,
99
+ },
100
+ derivedEnvVars: {},
99
101
  })
100
102
 
101
103
  // Create a command runner - simply pass your DaggerEnv instance
package/package.json CHANGED
@@ -1,17 +1,18 @@
1
1
  {
2
2
  "name": "dagger-env",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "private": false,
5
5
  "description": "A type-safe, reusable environment configuration abstraction for Dagger modules.",
6
6
  "keywords": [
7
7
  "dagger",
8
8
  "env"
9
9
  ],
10
- "homepage": "https://github.com/monorepo-rocks/monorepo-rocks/tree/main/packages/dagger-env",
10
+ "homepage": "https://github.com/jahands/workers-packages/tree/main/npm-pkgs/dagger-env",
11
+ "bugs": "https://github.com/jahands/workers-packages/issues",
11
12
  "repository": {
12
13
  "type": "git",
13
- "url": "https://github.com/monorepo-rocks/monorepo-rocks.git",
14
- "directory": "packages/dagger-env"
14
+ "url": "https://github.com/jahands/workers-packages.git",
15
+ "directory": "npm-pkgs/dagger-env"
15
16
  },
16
17
  "license": "MIT",
17
18
  "author": {
@@ -46,19 +47,22 @@
46
47
  "dist"
47
48
  ],
48
49
  "dependencies": {
49
- "zx": "8.5.4"
50
+ "zx": "8.8.4"
50
51
  },
51
52
  "devDependencies": {
52
53
  "@dagger.io/dagger": "0.18.9",
53
- "typescript": "5.5.4",
54
- "vitest": "3.1.4",
55
- "zod": "4.1.1",
56
- "@repo/tools": "0.4.0",
57
- "@repo/typescript-config": "0.1.2"
54
+ "typescript": "5.8.2",
55
+ "vitest": "3.2.4",
56
+ "zod": "4.1.12",
57
+ "@repo/typescript-config": "0.3.7",
58
+ "@repo/tools": "0.12.0"
58
59
  },
59
60
  "peerDependencies": {
60
61
  "zod": "^3.25.76 || ^4.1.1"
61
62
  },
63
+ "publishConfig": {
64
+ "access": "public"
65
+ },
62
66
  "scripts": {
63
67
  "build": "runx build tsc ./src/index.ts ./src/op.ts ./src/run-dagger-cmd.ts",
64
68
  "check:exports": "runx check --exports",
@@ -1,72 +0,0 @@
1
- import { z } from 'zod/v4';
2
- import type { Container, Secret } from '@dagger.io/dagger';
3
- /**
4
- * Generic configuration for DaggerEnv
5
- */
6
- export type DaggerEnvConfig = {
7
- /** Arguments schema */
8
- args: z.ZodObject<any>;
9
- /** Environment variables schema */
10
- env: z.ZodObject<any>;
11
- /** Secrets schema */
12
- secrets: z.ZodObject<any>;
13
- /** Secret presets mapping preset names to arrays of secret names */
14
- secretPresets: Record<string, readonly string[]>;
15
- /** Derived environment variables based on secret names */
16
- derivedEnvVars: Record<string, Record<string, string>>;
17
- };
18
- /**
19
- * Inferred options type from config
20
- */
21
- export type DaggerOptionsFromConfig<T extends DaggerEnvConfig> = {
22
- args: z.output<T['args']>;
23
- env: z.output<T['env']>;
24
- secrets: z.output<T['secrets']>;
25
- };
26
- /**
27
- * Reusable Dagger environment abstraction
28
- */
29
- export declare class DaggerEnv<T extends DaggerEnvConfig> {
30
- private readonly config;
31
- private readonly optionsSchema;
32
- constructor(config: T);
33
- /**
34
- * Parse dagger options from a Secret
35
- */
36
- parseDaggerOptions(options: Secret): Promise<DaggerOptionsFromConfig<T>>;
37
- /**
38
- * Create a function that applies environment variables and secrets to a container
39
- * based on the provided Dagger options, secret presets, and additional secret names.
40
- */
41
- getWithEnv(daggerOptions: Secret | DaggerOptionsFromConfig<T>, secretPresets: Array<Extract<keyof T['secretPresets'], string>>, secretNames?: Array<Extract<keyof z.output<T['secrets']>, string>>): Promise<{
42
- /**
43
- * Apply environment variables and secrets to a container
44
- */
45
- withEnv: (con: Container) => Container;
46
- /**
47
- * Remove environment variables and secrets from a container
48
- */
49
- withoutEnv: (con: Container) => Container;
50
- }>;
51
- /**
52
- * Get the options schema for this DaggerEnv instance
53
- */
54
- getOptionsSchema(): z.ZodObject<{
55
- args: T["args"];
56
- env: T["env"];
57
- secrets: T["secrets"];
58
- }, z.core.$strip>;
59
- /**
60
- * Get available secret presets
61
- */
62
- getSecretPresets(): Array<keyof T['secretPresets']>;
63
- /**
64
- * Get secrets for a specific preset
65
- */
66
- getPresetSecrets(preset: Extract<keyof T['secretPresets'], string>): readonly string[];
67
- }
68
- /**
69
- * Helper function to create a DaggerEnv instance with proper typing
70
- */
71
- export declare function createDaggerEnv<T extends DaggerEnvConfig>(config: T): DaggerEnv<T>;
72
- //# sourceMappingURL=dagger-env.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dagger-env.d.ts","sourceRoot":"","sources":["../src/dagger-env.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1D;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC7B,uBAAuB;IACvB,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACtB,mCAAmC;IACnC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACrB,qBAAqB;IACrB,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACzB,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAA;IAChD,0DAA0D;IAC1D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACtD,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,eAAe,IAAI;IAChE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IACzB,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;CAC/B,CAAA;AAED;;GAEG;AACH,qBAAa,SAAS,CAAC,CAAC,SAAS,eAAe;IAOnC,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAI5B;gBAE2B,MAAM,EAAE,CAAC;IAQtC;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAM9E;;;OAGG;IACG,UAAU,CACf,aAAa,EAAE,MAAM,GAAG,uBAAuB,CAAC,CAAC,CAAC,EAClD,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC,EAC/D,WAAW,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAChE,OAAO,CAAC;QACV;;WAEG;QACH,OAAO,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,SAAS,CAAA;QACtC;;WAEG;QACH,UAAU,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,SAAS,CAAA;KACzC,CAAC;IAyHF;;OAEG;IACH,gBAAgB;cAnKT,CAAC,CAAC,MAAM,CAAC;aACV,CAAC,CAAC,KAAK,CAAC;iBACJ,CAAC,CAAC,SAAS,CAAC;;IAqKtB;;OAEG;IACH,gBAAgB,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;IAInD;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE;CAOtF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,eAAe,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAElF"}
@@ -1,159 +0,0 @@
1
- import { dag } from '@dagger.io/dagger';
2
- import { z } from 'zod/v4';
3
- /**
4
- * Reusable Dagger environment abstraction
5
- */
6
- export class DaggerEnv {
7
- config;
8
- optionsSchema;
9
- constructor(config) {
10
- this.config = config;
11
- this.optionsSchema = z.object({
12
- args: config.args,
13
- env: config.env,
14
- secrets: config.secrets,
15
- });
16
- }
17
- /**
18
- * Parse dagger options from a Secret
19
- */
20
- async parseDaggerOptions(options) {
21
- return this.optionsSchema.parse(JSON.parse(await options.plaintext()));
22
- }
23
- /**
24
- * Create a function that applies environment variables and secrets to a container
25
- * based on the provided Dagger options, secret presets, and additional secret names.
26
- */
27
- async getWithEnv(daggerOptions, secretPresets, secretNames) {
28
- const isSecret = (obj) => obj &&
29
- typeof obj === 'object' &&
30
- 'id' in obj &&
31
- 'plaintext' in obj &&
32
- typeof obj.id === 'function' &&
33
- typeof obj.plaintext === 'function';
34
- const opts = isSecret(daggerOptions)
35
- ? await this.parseDaggerOptions(daggerOptions)
36
- : daggerOptions;
37
- return {
38
- withEnv: (con) => {
39
- let c = con;
40
- // Add individual secret names
41
- for (const name of secretNames ?? []) {
42
- if (typeof name === 'string' && name in opts.secrets) {
43
- const secret = opts.secrets[name];
44
- if (!secret) {
45
- throw new Error(`Secret ${name} is undefined`);
46
- }
47
- c = c.withSecretVariable(name, dag.setSecret(name, secret));
48
- }
49
- }
50
- const allSecretNames = [...(secretNames ?? [])];
51
- // Add secret presets
52
- for (const preset of secretPresets) {
53
- const presetSecrets = this.config.secretPresets[preset];
54
- if (!presetSecrets) {
55
- throw new Error(`Unknown secret preset: ${String(preset)}`);
56
- }
57
- for (const secretName of presetSecrets) {
58
- const secret = opts.secrets[secretName];
59
- if (!secret) {
60
- throw new Error(`Secret ${secretName} is undefined`);
61
- }
62
- allSecretNames.push(secretName);
63
- c = c.withSecretVariable(secretName, dag.setSecret(secretName, secret));
64
- }
65
- }
66
- // Add derived env vars based on secretNames
67
- for (const name of allSecretNames) {
68
- const derivedEnvVars = this.config.derivedEnvVars[name];
69
- if (derivedEnvVars) {
70
- for (const [key, value] of Object.entries(derivedEnvVars)) {
71
- c = c.withEnvVariable(key, value);
72
- }
73
- }
74
- }
75
- // Add environment variables from options
76
- const envVars = opts.env;
77
- for (const [key, value] of Object.entries(envVars)) {
78
- if (value !== undefined && typeof value === 'string') {
79
- c = c.withEnvVariable(key, value);
80
- }
81
- }
82
- return c;
83
- },
84
- withoutEnv: (con) => {
85
- let c = con;
86
- // Add individual secret names
87
- for (const name of secretNames ?? []) {
88
- if (typeof name === 'string' && name in opts.secrets) {
89
- const secret = opts.secrets[name];
90
- if (!secret) {
91
- throw new Error(`Secret ${name} is undefined`);
92
- }
93
- c = c.withoutSecretVariable(name);
94
- }
95
- }
96
- const allSecretNames = [...(secretNames ?? [])];
97
- // remove secret presets
98
- for (const preset of secretPresets) {
99
- const presetSecrets = this.config.secretPresets[preset];
100
- if (!presetSecrets) {
101
- throw new Error(`Unknown secret preset: ${String(preset)}`);
102
- }
103
- for (const secretName of presetSecrets) {
104
- const secret = opts.secrets[secretName];
105
- if (!secret) {
106
- throw new Error(`Secret ${secretName} is undefined`);
107
- }
108
- allSecretNames.push(secretName);
109
- c = c.withoutSecretVariable(secretName);
110
- }
111
- }
112
- // remove derived env vars based on secretNames
113
- for (const name of allSecretNames) {
114
- const derivedEnvVars = this.config.derivedEnvVars[name];
115
- if (derivedEnvVars) {
116
- for (const key of Object.keys(derivedEnvVars)) {
117
- c = c.withoutEnvVariable(key);
118
- }
119
- }
120
- }
121
- // remove environment variables from options
122
- const envVars = opts.env;
123
- for (const key of Object.keys(envVars)) {
124
- c = c.withoutEnvVariable(key);
125
- }
126
- return c;
127
- },
128
- };
129
- }
130
- /**
131
- * Get the options schema for this DaggerEnv instance
132
- */
133
- getOptionsSchema() {
134
- return this.optionsSchema;
135
- }
136
- /**
137
- * Get available secret presets
138
- */
139
- getSecretPresets() {
140
- return Object.keys(this.config.secretPresets);
141
- }
142
- /**
143
- * Get secrets for a specific preset
144
- */
145
- getPresetSecrets(preset) {
146
- const secrets = this.config.secretPresets[preset];
147
- if (!secrets) {
148
- throw new Error(`Unknown secret preset: ${String(preset)}`);
149
- }
150
- return secrets;
151
- }
152
- }
153
- /**
154
- * Helper function to create a DaggerEnv instance with proper typing
155
- */
156
- export function createDaggerEnv(config) {
157
- return new DaggerEnv(config);
158
- }
159
- //# sourceMappingURL=dagger-env.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dagger-env.js","sourceRoot":"","sources":["../src/dagger-env.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './dagger-env.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA"}
package/dist/index.js DELETED
@@ -1,2 +0,0 @@
1
- export * from './dagger-env.js';
2
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA"}
package/dist/op.d.ts DELETED
@@ -1,90 +0,0 @@
1
- import { z } from 'zod/v4';
2
- /**
3
- * 1Password vault information
4
- */
5
- export type OPVault = z.infer<typeof OPVault>;
6
- export declare const OPVault: z.ZodObject<{
7
- id: z.ZodString;
8
- name: z.ZodString;
9
- }, z.core.$strip>;
10
- /**
11
- * 1Password item section information
12
- */
13
- export type OPSection = z.infer<typeof OPSection>;
14
- export declare const OPSection: z.ZodObject<{
15
- id: z.ZodString;
16
- label: z.ZodOptional<z.ZodString>;
17
- }, z.core.$strip>;
18
- /**
19
- * 1Password item field
20
- */
21
- export type OPField = z.infer<typeof OPField>;
22
- export declare const OPField: z.ZodObject<{
23
- id: z.ZodString;
24
- section: z.ZodOptional<z.ZodObject<{
25
- id: z.ZodString;
26
- label: z.ZodOptional<z.ZodString>;
27
- }, z.core.$strip>>;
28
- type: z.ZodEnum<{
29
- STRING: "STRING";
30
- CONCEALED: "CONCEALED";
31
- MONTH_YEAR: "MONTH_YEAR";
32
- }>;
33
- purpose: z.ZodOptional<z.ZodEnum<{
34
- NOTES: "NOTES";
35
- }>>;
36
- label: z.ZodString;
37
- value: z.ZodString;
38
- reference: z.ZodString;
39
- }, z.core.$strip>;
40
- /**
41
- * 1Password item category
42
- */
43
- export type OPCategory = z.infer<typeof OPCategory>;
44
- export declare const OPCategory: z.ZodEnum<{
45
- SECURE_NOTE: "SECURE_NOTE";
46
- }>;
47
- /**
48
- * Complete 1Password item structure
49
- */
50
- export type OPItem = z.infer<typeof OPItem>;
51
- export declare const OPItem: z.ZodObject<{
52
- id: z.ZodString;
53
- title: z.ZodString;
54
- favorite: z.ZodBoolean;
55
- version: z.ZodInt;
56
- vault: z.ZodObject<{
57
- id: z.ZodString;
58
- name: z.ZodString;
59
- }, z.core.$strip>;
60
- category: z.ZodEnum<{
61
- SECURE_NOTE: "SECURE_NOTE";
62
- }>;
63
- last_edited_by: z.ZodString;
64
- created_at: z.ZodISODateTime;
65
- updated_at: z.ZodISODateTime;
66
- additional_information: z.ZodString;
67
- sections: z.ZodArray<z.ZodObject<{
68
- id: z.ZodString;
69
- label: z.ZodOptional<z.ZodString>;
70
- }, z.core.$strip>>;
71
- fields: z.ZodArray<z.ZodObject<{
72
- id: z.ZodString;
73
- section: z.ZodOptional<z.ZodObject<{
74
- id: z.ZodString;
75
- label: z.ZodOptional<z.ZodString>;
76
- }, z.core.$strip>>;
77
- type: z.ZodEnum<{
78
- STRING: "STRING";
79
- CONCEALED: "CONCEALED";
80
- MONTH_YEAR: "MONTH_YEAR";
81
- }>;
82
- purpose: z.ZodOptional<z.ZodEnum<{
83
- NOTES: "NOTES";
84
- }>>;
85
- label: z.ZodString;
86
- value: z.ZodString;
87
- reference: z.ZodString;
88
- }, z.core.$strip>>;
89
- }, z.core.$strip>;
90
- //# sourceMappingURL=op.d.ts.map
package/dist/op.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"op.d.ts","sourceRoot":"","sources":["../src/op.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE1B;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAA;AAC7C,eAAO,MAAM,OAAO;;;iBAGlB,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA;AACjD,eAAO,MAAM,SAAS;;;iBAGpB,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAA;AAC7C,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;iBAQlB,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AACnD,eAAO,MAAM,UAAU;;EAA0B,CAAA;AAEjD;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAA;AAC3C,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAajB,CAAA"}
package/dist/op.js DELETED
@@ -1,34 +0,0 @@
1
- import { z } from 'zod/v4';
2
- export const OPVault = z.object({
3
- id: z.string(),
4
- name: z.string(),
5
- });
6
- export const OPSection = z.object({
7
- id: z.string(),
8
- label: z.string().optional(),
9
- });
10
- export const OPField = z.object({
11
- id: z.string(),
12
- section: OPSection.optional(),
13
- type: z.enum(['STRING', 'CONCEALED', 'MONTH_YEAR']),
14
- purpose: z.enum(['NOTES']).optional(),
15
- label: z.string(),
16
- value: z.string(),
17
- reference: z.string(),
18
- });
19
- export const OPCategory = z.enum(['SECURE_NOTE']);
20
- export const OPItem = z.object({
21
- id: z.string(),
22
- title: z.string(),
23
- favorite: z.boolean(),
24
- version: z.int(),
25
- vault: OPVault,
26
- category: OPCategory,
27
- last_edited_by: z.string(),
28
- created_at: z.iso.datetime(),
29
- updated_at: z.iso.datetime(),
30
- additional_information: z.string(),
31
- sections: z.array(OPSection),
32
- fields: z.array(OPField),
33
- });
34
- //# sourceMappingURL=op.js.map
package/dist/op.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"op.js","sourceRoot":"","sources":["../src/op.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAM1B,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAA;AAMF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAA;AAMF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IACnD,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAA;AAMF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAA;AAMjD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE;IAChB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;IAC5B,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;IAC5B,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;CACxB,CAAC,CAAA"}
@@ -1,39 +0,0 @@
1
- import type { DaggerEnv, DaggerEnvConfig } from './dagger-env.js';
2
- /**
3
- * Configuration for running Dagger commands with 1Password integration
4
- */
5
- export interface RunDaggerCommandConfig<T extends DaggerEnvConfig = DaggerEnvConfig> {
6
- /** 1Password vault ID */
7
- opVault: string;
8
- /** 1Password item ID */
9
- opItem: string;
10
- /** 1Password sections to include for secrets */
11
- opSections: Array<{
12
- label: string;
13
- id: string;
14
- }>;
15
- /** Commands that should include Docker socket if available */
16
- dockerCommands?: string[];
17
- /** Hook to run before executing the command (e.g., vendor file setup) */
18
- beforeCommand?: () => Promise<void>;
19
- /** DaggerEnv instance for schema validation and type safety */
20
- daggerEnv: DaggerEnv<T>;
21
- }
22
- /**
23
- * Options for individual command execution
24
- */
25
- export interface RunDaggerCommandOptions {
26
- /** Arguments to pass to the Dagger command */
27
- args?: Record<string, any>;
28
- /** Additional environment variables */
29
- env?: Record<string, string>;
30
- /** Additional command-line arguments */
31
- extraArgs?: string[];
32
- }
33
- /**
34
- * Creates a function to run Dagger commands with 1Password integration
35
- * @param config Configuration for the command runner
36
- * @returns Function to execute Dagger commands
37
- */
38
- export declare function createDaggerCommandRunner<T extends DaggerEnvConfig>(config: RunDaggerCommandConfig<T>): (commandName: string, options?: RunDaggerCommandOptions) => Promise<void>;
39
- //# sourceMappingURL=run-dagger-cmd.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-dagger-cmd.d.ts","sourceRoot":"","sources":["../src/run-dagger-cmd.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjE;;GAEG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe;IAClF,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,gDAAgD;IAChD,UAAU,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAChD,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,+DAA+D;IAC/D,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,eAAe,EAClE,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC,iBAKnB,MAAM,YACT,uBAAuB,KAC/B,OAAO,CAAC,IAAI,CAAC,CAuFhB"}
@@ -1,82 +0,0 @@
1
- import { $, fs } from 'zx';
2
- import { OPItem, OPSection } from './op.js';
3
- /**
4
- * Creates a function to run Dagger commands with 1Password integration
5
- * @param config Configuration for the command runner
6
- * @returns Function to execute Dagger commands
7
- */
8
- export function createDaggerCommandRunner(config) {
9
- const opItemUri = `op://${config.opVault}/${config.opItem}`;
10
- return async function runDaggerCommand(commandName, options) {
11
- const { args = {}, env = {}, extraArgs = [] } = options ?? {};
12
- // Run any pre-command setup
13
- if (config.beforeCommand) {
14
- await config.beforeCommand();
15
- }
16
- // Environment variables to pass to the `op run` command
17
- const envVars = {};
18
- // Pass dagger cloud token in CI because we don't have user auth
19
- if (process.env.CI !== undefined) {
20
- envVars.DAGGER_CLOUD_TOKEN = `${opItemUri}/DAGGER_CLOUD_TOKEN`;
21
- }
22
- const commandArgs = [...extraArgs];
23
- // Add Docker socket for specific commands if available
24
- if (config.dockerCommands?.includes(commandName)) {
25
- try {
26
- if (await fs.exists('/var/run/docker.sock')) {
27
- commandArgs.push('--docker-socket=/var/run/docker.sock');
28
- }
29
- }
30
- catch {
31
- // Ignore if fs is not available or docker socket doesn't exist
32
- }
33
- }
34
- // Fetch 1Password item
35
- const opItem = OPItem.parse(await $ `op item get ${config.opItem} --vault ${config.opVault} --format json`.json());
36
- // Parse sections to include
37
- const sectionsToInclude = OPSection.array().parse(config.opSections);
38
- // Extract secrets from specified sections
39
- const secrets = opItem.fields
40
- .filter((f) => sectionsToInclude.some((s) => s.id === f.section?.id))
41
- .reduce((acc, f) => {
42
- acc[f.label] = f.value;
43
- return acc;
44
- }, {});
45
- // Build environment variables for Dagger
46
- const daggerEnv = { ...env };
47
- if (process.env.CI !== undefined) {
48
- daggerEnv.CI = process.env.CI;
49
- }
50
- if (process.env.GITHUB_ACTIONS !== undefined) {
51
- daggerEnv.GITHUB_ACTIONS = process.env.GITHUB_ACTIONS;
52
- }
53
- // Validate and serialize dagger options
54
- const daggerOptions = config.daggerEnv.getOptionsSchema().parse({
55
- args,
56
- env: daggerEnv,
57
- secrets,
58
- });
59
- envVars.DAGGER_OPTIONS = JSON.stringify(daggerOptions);
60
- // Construct the command
61
- const cmd = [
62
- 'op',
63
- 'run',
64
- '--no-masking',
65
- '--',
66
- 'dagger',
67
- 'call',
68
- commandName,
69
- ...commandArgs,
70
- '--options=env://DAGGER_OPTIONS',
71
- ];
72
- // Execute the command
73
- await $({
74
- env: {
75
- ...process.env,
76
- ...envVars,
77
- },
78
- stdio: 'inherit',
79
- }) `${cmd}`;
80
- };
81
- }
82
- //# sourceMappingURL=run-dagger-cmd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-dagger-cmd.js","sourceRoot":"","sources":["../src/run-dagger-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,IAAI,CAAA;AAE1B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAkC3C;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACxC,MAAiC;IAEjC,MAAM,SAAS,GAAG,QAAQ,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,CAAA;IAE3D,OAAO,KAAK,UAAU,gBAAgB,CACrC,WAAmB,EACnB,OAAiC;QAEjC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;QAE7D,4BAA4B;QAC5B,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,MAAM,CAAC,aAAa,EAAE,CAAA;QAC7B,CAAC;QAED,wDAAwD;QACxD,MAAM,OAAO,GAA2B,EAAE,CAAA;QAE1C,gEAAgE;QAChE,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,CAAC,kBAAkB,GAAG,GAAG,SAAS,qBAAqB,CAAA;QAC/D,CAAC;QAED,MAAM,WAAW,GAAa,CAAC,GAAG,SAAS,CAAC,CAAA;QAE5C,uDAAuD;QACvD,IAAI,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC;gBACJ,IAAI,MAAM,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC;oBAC7C,WAAW,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;gBACzD,CAAC;YACF,CAAC;YAAC,MAAM,CAAC;gBACR,+DAA+D;YAChE,CAAC;QACF,CAAC;QAED,uBAAuB;QACvB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAC1B,MAAM,CAAC,CAAA,eAAe,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,OAAO,gBAAgB,CAAC,IAAI,EAAE,CACpF,CAAA;QAED,4BAA4B;QAC5B,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAEpE,0CAA0C;QAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM;aAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aACpE,MAAM,CACN,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACV,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAA;YACtB,OAAO,GAAG,CAAA;QACX,CAAC,EACD,EAA4B,CAC5B,CAAA;QAEF,yCAAyC;QACzC,MAAM,SAAS,GAA2B,EAAE,GAAG,GAAG,EAAE,CAAA;QACpD,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAClC,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;QAC9B,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAC9C,SAAS,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA;QACtD,CAAC;QAED,wCAAwC;QACxC,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC;YAC/D,IAAI;YACJ,GAAG,EAAE,SAAS;YACd,OAAO;SACP,CAAC,CAAA;QACF,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;QAEtD,wBAAwB;QACxB,MAAM,GAAG,GAAa;YACrB,IAAI;YACJ,KAAK;YACL,cAAc;YACd,IAAI;YACJ,QAAQ;YACR,MAAM;YACN,WAAW;YACX,GAAG,WAAW;YACd,gCAAgC;SAChC,CAAA;QAED,sBAAsB;QACtB,MAAM,CAAC,CAAC;YACP,GAAG,EAAE;gBACJ,GAAG,OAAO,CAAC,GAAG;gBACd,GAAG,OAAO;aACV;YACD,KAAK,EAAE,SAAS;SAChB,CAAC,CAAA,GAAG,GAAG,EAAE,CAAA;IACX,CAAC,CAAA;AACF,CAAC"}