@blakearoberts/visage 0.0.1-rc.8 → 0.0.1

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.
@@ -0,0 +1,4 @@
1
+ import type { VisageMiddleware, VisageUpgradeHandler } from './server';
2
+ export declare function createVisageMiddleware(edgeKey: string): VisageMiddleware;
3
+ export declare function createVisageUpgradeHandler(edgeKey: string): VisageUpgradeHandler;
4
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAIvE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CASxE;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,GACd,oBAAoB,CAUtB"}
@@ -0,0 +1,3 @@
1
+ import type { VisageConfig } from './config';
2
+ export declare function ensureNginxNetwork(config: VisageConfig): VisageConfig;
3
+ //# sourceMappingURL=network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CA6CrE"}
@@ -0,0 +1,5 @@
1
+ import type { Plugin } from 'vite';
2
+ import type { VisageOptions } from './types';
3
+ export declare function visage(options?: VisageOptions): Plugin;
4
+ export default visage;
5
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAQlD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,wBAAgB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CAgG1D;AAED,eAAe,MAAM,CAAC"}
@@ -1,3 +1,5 @@
1
- import type { VisageConfig } from '../config';
2
- export declare function render(config: VisageConfig): void;
1
+ export { writeComposeConfig } from './compose';
2
+ export { writeDexConfig } from './dex';
3
+ export { writeNginxConfig } from './nginx';
4
+ export { writeOauth2ProxyConfig } from './oauth2-proxy';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAM9C,wBAAgB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAOjD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"nginx.d.ts","sourceRoot":"","sources":["../../src/render/nginx.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA0D9C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAI3D"}
1
+ {"version":3,"file":"nginx.d.ts","sourceRoot":"","sources":["../../src/render/nginx.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAiH9C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAI3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"oauth2-proxy.d.ts","sourceRoot":"","sources":["../../src/render/oauth2-proxy.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAWjE"}
1
+ {"version":3,"file":"oauth2-proxy.d.ts","sourceRoot":"","sources":["../../src/render/oauth2-proxy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAW9C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAIjE"}
@@ -0,0 +1,31 @@
1
+ import type { IncomingMessage, ServerResponse } from 'node:http';
2
+ import type { Socket } from 'node:net';
3
+ import { type VisageConfig } from './config';
4
+ import type { VisageOptions } from './types';
5
+ export type VisageMiddleware = (request: IncomingMessage, response: ServerResponse, next: () => void) => void;
6
+ export type VisageUpgradeHandler = (request: IncomingMessage, socket: Socket) => void;
7
+ /**
8
+ * A running Visage instance.
9
+ */
10
+ export type VisageServer = {
11
+ /**
12
+ * Reject requests that did not pass through the Visage-managed NGINX edge.
13
+ */
14
+ middleware: VisageMiddleware;
15
+ /**
16
+ * Reject upgrade requests that did not pass through the Visage-managed NGINX
17
+ * edge.
18
+ */
19
+ upgrade: VisageUpgradeHandler;
20
+ /**
21
+ * Start the Visage managed services (NGINX, OAuth2 Proxy, and sometimes Dex).
22
+ */
23
+ listen(): Promise<void>;
24
+ /**
25
+ * Stop the Visage managed services.
26
+ */
27
+ close(): void;
28
+ };
29
+ export declare function createVisageServer(options: VisageOptions): VisageServer;
30
+ export declare function startVisageServer(config: VisageConfig): Promise<() => void>;
31
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAKvC,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAa5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,gBAAgB,GAAG,CAC7B,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,MAAM,IAAI,KACb,IAAI,CAAC;AAEV,MAAM,MAAM,oBAAoB,GAAG,CACjC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,KACX,IAAI,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,UAAU,EAAE,gBAAgB,CAAC;IAC7B;;;OAGG;IACH,OAAO,EAAE,oBAAoB,CAAC;IAC9B;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,CAgBvE;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,MAAM,IAAI,CAAC,CAmBrB"}
package/dist/types.d.ts CHANGED
@@ -49,9 +49,9 @@ export type VisageCookiePolicy = {
49
49
  /**
50
50
  * Browser session cookie base name. When no domains are configured, Visage
51
51
  * renders a host-only name with a `__Host-` prefix, so the default rendered
52
- * name is `__Host-session`.
52
+ * name is `__Host-sess`.
53
53
  *
54
- * @defaultValue `'session'`
54
+ * @defaultValue `'sess'`
55
55
  */
56
56
  readonly name?: string;
57
57
  /**
@@ -66,9 +66,9 @@ export type VisageCookiePolicy = {
66
66
  /**
67
67
  * Session age after which OAuth2 Proxy attempts silent renewal using the
68
68
  * stored refresh token, when one is available. Rendered as `cookie_refresh`
69
- * using OAuth2 Proxy duration syntax. If upstreams validate forwarded access
70
- * tokens, set this below the access-token lifetime so OAuth2 Proxy refreshes
71
- * before forwarding an expired bearer token.
69
+ * using OAuth2 Proxy duration syntax. If upstreams validate forwarded bearer
70
+ * tokens, set this below the relevant token lifetime so OAuth2 Proxy refreshes
71
+ * before forwarding expired token material.
72
72
  *
73
73
  * @defaultValue `'15m'`
74
74
  */
@@ -87,11 +87,14 @@ export type VisageCookiePolicy = {
87
87
  readonly path?: string;
88
88
  };
89
89
  /**
90
- * Managed Dex identity provider options.
90
+ * Managed Dex identity provider options. Dex is the default identity provider
91
+ * for Visage.
91
92
  */
92
93
  export type VisageDexOptions = {
93
94
  /**
94
95
  * Token expiration and rotation settings rendered into the Dex config.
96
+ *
97
+ * @see {@link https://dexidp.io/docs/configuration/tokens/#expiration-and-rotation-settings}
95
98
  */
96
99
  readonly expiry?: VisageDexExpiry;
97
100
  /**
@@ -177,30 +180,36 @@ export type VisageDexUser = {
177
180
  */
178
181
  export type VisageExternalIdpOptions = {
179
182
  /**
180
- * OIDC issuer URL used by OAuth2 Proxy.
183
+ * OIDC issuer URL used by OAuth2 Proxy. When no endpoint paths are
184
+ * configured, OAuth2 Proxy discovers provider endpoints from this issuer.
181
185
  */
182
186
  readonly issuer: string;
183
187
  /**
184
188
  * OIDC authorization path appended to
185
- * {@link VisageExternalIdpOptions.issuer}.
186
- *
187
- * @defaultValue '/auth'
189
+ * {@link VisageExternalIdpOptions.issuer}. Configure this, `token`, or `jwks`
190
+ * to disable OIDC discovery and render explicit provider endpoints.
188
191
  */
189
192
  readonly authorization?: string;
190
193
  /**
191
194
  * OIDC token endpoint path appended to
192
- * {@link VisageExternalIdpOptions.issuer}.
193
- *
194
- * @defaultValue '/token'
195
+ * {@link VisageExternalIdpOptions.issuer}. Configure this, `authorization`,
196
+ * or `jwks` to disable OIDC discovery and render explicit provider
197
+ * endpoints.
195
198
  */
196
199
  readonly token?: string;
197
200
  /**
198
201
  * OIDC JWKS endpoint path appended to
199
- * {@link VisageExternalIdpOptions.issuer}.
200
- *
201
- * @defaultValue '/keys'
202
+ * {@link VisageExternalIdpOptions.issuer}. Configure this, `authorization`,
203
+ * or `token` to disable OIDC discovery and render explicit provider
204
+ * endpoints.
202
205
  */
203
206
  readonly jwks?: string;
207
+ /**
208
+ * OIDC end-session endpoint URL. When configured, Visage routes OAuth2 Proxy
209
+ * sign-out redirects through this endpoint so the provider session can be
210
+ * ended as part of the sign-out flow.
211
+ */
212
+ readonly end_session_endpoint?: string;
204
213
  };
205
214
  /**
206
215
  * OAuth2 client configuration used by OAuth2 Proxy and, for managed Dex, the
@@ -228,6 +237,12 @@ export type VisageOAuth2Client = {
228
237
  * @defaultValue `['openid', 'email', 'profile', 'offline_access']`
229
238
  */
230
239
  readonly scopes?: readonly string[];
240
+ /**
241
+ * Email domains allowed by OAuth2 Proxy after authentication.
242
+ *
243
+ * @defaultValue `['example.com']`
244
+ */
245
+ readonly emailDomains?: readonly string[];
231
246
  };
232
247
  /**
233
248
  * Subset of a Docker Compose service definition managed by Visage.
@@ -251,6 +266,11 @@ export type VisageService = {
251
266
  * Additional host-to-IP mappings rendered into the Compose service.
252
267
  */
253
268
  readonly extra_hosts?: readonly string[];
269
+ /**
270
+ * Container restart policy.
271
+ * @defaultValue `'on-failure'`
272
+ */
273
+ readonly restart?: 'always' | 'no' | 'on-failure' | 'unless-stopped';
254
274
  /**
255
275
  * Optional upstream override for this service. Omit this to create a default
256
276
  * upstream from the service name.
@@ -309,13 +329,26 @@ export type VisageProxyPolicy = {
309
329
  */
310
330
  readonly redirect?: boolean;
311
331
  /**
312
- * Whether the authenticated access token should be forwarded upstream as an
313
- * `Authorization: Bearer ...` header.
332
+ * Token forwarding behavior for the upstream `Authorization` header. Set
333
+ * to `false` to omit a bearer token. Set to `true` to forward the
334
+ * default bearer token for the upstream kind: an OAuth access token for
335
+ * external upstreams, or an OIDC ID token for local service upstreams.
314
336
  *
315
- * @defaultValue `true`
337
+ * Use `'id'` or `'access'` to force a specific token kind.
338
+ *
339
+ * @defaultValue `false`
316
340
  */
317
- readonly forward?: boolean;
341
+ readonly forward?: boolean | 'id' | 'access';
318
342
  };
343
+ /**
344
+ * Browser request isolation policy for authenticated cookie-backed
345
+ * locations. Set this to `false` when an upstream handles CSRF itself or
346
+ * intentionally accepts cross-site browser requests.
347
+ *
348
+ * @defaultValue `'app'` for the built-in Vite root location; `'api'` for
349
+ * authenticated upstream locations; `false` for unauthenticated locations.
350
+ */
351
+ readonly csrf?: false | 'app' | 'api';
319
352
  /**
320
353
  * Request headers to set when proxying to the upstream. Values may include
321
354
  * NGINX variables. These are merged with Visage's default proxy headers:
@@ -326,5 +359,13 @@ export type VisageProxyPolicy = {
326
359
  readonly headers?: {
327
360
  readonly [key: string]: string;
328
361
  };
362
+ /**
363
+ * Additional NGINX location directives. Values may include NGINX variables.
364
+ * String values render once; array values render once per item. These are
365
+ * merged with Visage's default directives such as `proxy_buffer_size`.
366
+ */
367
+ readonly directives?: {
368
+ readonly [name: string]: string | readonly string[];
369
+ };
329
370
  };
330
371
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,gBAAgB,GAAG,wBAAwB,CAAC;IAC3D;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAClD;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACrD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CAC3C,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE;QACvB;;WAEG;QACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QACpC;;WAEG;QACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QACnC;;WAEG;QACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;QACnC;;WAEG;QACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACxC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,gBAAgB,CAAC;IACrE;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAA;KAAE,CAAC;CACrE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd;;;;WAIG;QACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAC3B;;;;WAIG;QACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAC5B;;;;;;;;;WASG;QACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;KAC9C,CAAC;IACF;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACtC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACtD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;KACrD,CAAC;CACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ services:
2
+ dex:
3
+ image: ghcr.io/dexidp/dex:v2.45.1
4
+ nginx:
5
+ image: nginx:1.31.1-alpine
6
+ oauth2_proxy:
7
+ image: quay.io/oauth2-proxy/oauth2-proxy:v7.15.2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blakearoberts/visage",
3
- "version": "0.0.1-rc.8",
3
+ "version": "0.0.1",
4
4
  "description": "Vite plugin for local development with HMR and OIDC session cookie lifecycle semantics.",
5
5
  "type": "module",
6
6
  "author": "Blake Roberts",
@@ -33,7 +33,8 @@
33
33
  }
34
34
  },
35
35
  "files": [
36
- "dist"
36
+ "dist",
37
+ "docker-compose.images.yml"
37
38
  ],
38
39
  "engines": {
39
40
  "node": ">=20"
@@ -45,28 +46,33 @@
45
46
  "scripts": {
46
47
  "build": "npm run clean && rollup -c",
47
48
  "clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
48
- "dev:example": "cd examples/managed-service && npm run dev",
49
- "format": "prettier --write \"{docs,examples,src,test}/**/*.{ts,tsx,js,jsx,json,css,html,md}\" \"*.{json,md}\"",
50
- "format:check": "prettier --check \"{docs,examples,src,test}/**/*.{ts,tsx,js,jsx,json,css,html,md}\" \"*.{json,md}\"",
49
+ "example": "npm run example:simple",
50
+ "example:simple": "cd examples/simple && npm run dev",
51
+ "format": "prettier --write .",
52
+ "format:check": "prettier --check .",
53
+ "promote:codex": "scripts/promote-codex.sh",
51
54
  "test": "npm run typecheck && npm run test:unit",
52
55
  "test:all": "npm test && npm run test:e2e",
53
56
  "test:e2e": "playwright test test/e2e",
54
57
  "test:unit": "node --experimental-strip-types --test test/unit/*.test.ts",
55
- "typecheck": "tsc --noEmit && tsc -p tsconfig.test.json"
58
+ "typecheck": "tsc --noEmit"
59
+ },
60
+ "dependencies": {
61
+ "bcryptjs": "^3.0.3",
62
+ "eta": "^4.6.0",
63
+ "yaml": "^2.9.0"
64
+ },
65
+ "peerDependencies": {
66
+ "vite": "^8.0.0"
56
67
  },
57
68
  "devDependencies": {
58
- "@playwright/test": "^1.59.1",
69
+ "@playwright/test": "^1.60.0",
59
70
  "@rollup/plugin-typescript": "^12.3.0",
60
- "@types/node": "^25.6.2",
71
+ "@types/node": "^25.8.0",
61
72
  "prettier": "^3.8.3",
62
- "rollup": "^4.60.3",
73
+ "rollup": "^4.60.4",
63
74
  "tslib": "^2.8.1",
64
- "typescript": "^5.9.3",
65
- "vite": "^6.3.5"
66
- },
67
- "dependencies": {
68
- "bcryptjs": "^3.0.3",
69
- "eta": "^4.6.0",
70
- "yaml": "^2.8.4"
75
+ "typescript": "^6.0.3",
76
+ "vite": "^8.0.13"
71
77
  }
72
78
  }