@absolutejs/deploy 0.19.0 → 0.20.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.
@@ -36,6 +36,7 @@ export type CreateManagedPreviewInput<Context> = {
36
36
  context: Context;
37
37
  runtimeId?: string;
38
38
  expiresAt?: number;
39
+ releaseId?: string;
39
40
  };
40
41
  export type ManagedPreviewFleetOptions<Context, Output> = {
41
42
  store: ManagedPreviewStore<Context, Output>;
@@ -100,7 +100,8 @@ var createManagedPreviewFleet = (options) => {
100
100
  previewId: input.previewId,
101
101
  status: "provisioning",
102
102
  updatedAt: now,
103
- ...input.expiresAt === undefined ? existing?.expiresAt === undefined ? {} : { expiresAt: existing.expiresAt } : { expiresAt: input.expiresAt }
103
+ ...input.expiresAt === undefined ? existing?.expiresAt === undefined ? {} : { expiresAt: existing.expiresAt } : { expiresAt: input.expiresAt },
104
+ ...input.releaseId === undefined ? {} : { releaseId: input.releaseId }
104
105
  };
105
106
  return publish(record);
106
107
  });
@@ -168,5 +169,5 @@ export {
168
169
  createManagedPreviewFleet
169
170
  };
170
171
 
171
- //# debugId=24BCDEC5036EDB5064756E2164756E21
172
+ //# debugId=6747D9124F0D08D764756E2164756E21
172
173
  //# sourceMappingURL=managedPreview.js.map
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/managedPreview.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * Durable, transport-neutral preview lifecycle.\n *\n * Unlike `createPreviewFleet`, this surface does not assume that the caller can\n * construct a Deployer for the destination. It is intended for control planes\n * that stream an immutable artifact to a remote fleet agent and own routing in\n * a separate edge service.\n */\n\nexport type ManagedPreviewStatus =\n | \"provisioning\"\n | \"running\"\n | \"failed\"\n | \"deleting\";\n\nexport type ManagedPreviewRecord<\n Context = Record<string, unknown>,\n Output = unknown,\n> = {\n previewId: string;\n runtimeId: string;\n status: ManagedPreviewStatus;\n context: Context;\n createdAt: number;\n updatedAt: number;\n expiresAt?: number;\n releaseId?: string;\n url?: string;\n output?: Output;\n error?: string;\n};\n\nexport type ManagedPreviewStore<\n Context = Record<string, unknown>,\n Output = unknown,\n> = {\n list: () => Promise<ManagedPreviewRecord<Context, Output>[]>;\n get: (\n previewId: string,\n ) => Promise<ManagedPreviewRecord<Context, Output> | null>;\n put: (record: ManagedPreviewRecord<Context, Output>) => Promise<void>;\n remove: (previewId: string) => Promise<void>;\n};\n\nexport type ManagedPreviewPublication<Output = unknown> = {\n releaseId: string;\n url: string;\n output?: Output;\n};\n\nexport type CreateManagedPreviewInput<Context> = {\n previewId: string;\n context: Context;\n runtimeId?: string;\n expiresAt?: number;\n};\n\nexport type ManagedPreviewFleetOptions<Context, Output> = {\n store: ManagedPreviewStore<Context, Output>;\n publish: (\n record: ManagedPreviewRecord<Context, Output>,\n ) => Promise<ManagedPreviewPublication<Output>>;\n destroy: (record: ManagedPreviewRecord<Context, Output>) => Promise<void>;\n createRuntimeId?: () => string;\n clock?: () => number;\n};\n\nexport type ManagedPreviewFleet<Context, Output> = {\n create: (\n input: CreateManagedPreviewInput<Context>,\n ) => Promise<ManagedPreviewRecord<Context, Output>>;\n resume: (previewId: string) => Promise<ManagedPreviewRecord<Context, Output>>;\n teardown: (previewId: string) => Promise<void>;\n list: () => Promise<ManagedPreviewRecord<Context, Output>[]>;\n get: (\n previewId: string,\n ) => Promise<ManagedPreviewRecord<Context, Output> | null>;\n gc: () => Promise<{\n removed: string[];\n errors: { previewId: string; error: Error }[];\n }>;\n};\n\nconst errorMessage = (error: unknown): string =>\n error instanceof Error ? error.message : String(error);\n\nexport const createManagedPreviewFleet = <Context, Output = unknown>(\n options: ManagedPreviewFleetOptions<Context, Output>,\n): ManagedPreviewFleet<Context, Output> => {\n const clock = options.clock ?? Date.now;\n const createRuntimeId =\n options.createRuntimeId ?? (() => crypto.randomUUID());\n const operations = new Map<string, Promise<void>>();\n\n const exclusive = async <Result>(\n previewId: string,\n operation: () => Promise<Result>,\n ): Promise<Result> => {\n const prior = operations.get(previewId) ?? Promise.resolve();\n let release: () => void = () => undefined;\n const current = new Promise<void>((resolve) => {\n release = resolve;\n });\n const queued = prior.then(() => current);\n operations.set(previewId, queued);\n await prior;\n try {\n return await operation();\n } finally {\n release();\n if (operations.get(previewId) === queued) operations.delete(previewId);\n }\n };\n\n const publish = async (\n record: ManagedPreviewRecord<Context, Output>,\n ): Promise<ManagedPreviewRecord<Context, Output>> => {\n const provisioning: ManagedPreviewRecord<Context, Output> = {\n ...record,\n status: \"provisioning\",\n updatedAt: clock(),\n };\n delete provisioning.error;\n await options.store.put(provisioning);\n\n try {\n const publication = await options.publish(provisioning);\n const running: ManagedPreviewRecord<Context, Output> = {\n ...provisioning,\n releaseId: publication.releaseId,\n url: publication.url,\n status: \"running\",\n updatedAt: clock(),\n ...(publication.output === undefined\n ? {}\n : { output: publication.output }),\n };\n await options.store.put(running);\n return running;\n } catch (error) {\n const failed: ManagedPreviewRecord<Context, Output> = {\n ...provisioning,\n error: errorMessage(error),\n status: \"failed\",\n updatedAt: clock(),\n };\n await options.store.put(failed);\n throw error;\n }\n };\n\n const create = async (\n input: CreateManagedPreviewInput<Context>,\n ): Promise<ManagedPreviewRecord<Context, Output>> =>\n exclusive(input.previewId, async () => {\n const existing = await options.store.get(input.previewId);\n const now = clock();\n const record: ManagedPreviewRecord<Context, Output> = {\n ...(existing ?? {\n createdAt: now,\n runtimeId: input.runtimeId ?? createRuntimeId(),\n }),\n context: input.context,\n previewId: input.previewId,\n status: \"provisioning\",\n updatedAt: now,\n ...(input.expiresAt === undefined\n ? existing?.expiresAt === undefined\n ? {}\n : { expiresAt: existing.expiresAt }\n : { expiresAt: input.expiresAt }),\n };\n return publish(record);\n });\n\n const resume = async (\n previewId: string,\n ): Promise<ManagedPreviewRecord<Context, Output>> =>\n exclusive(previewId, async () => {\n const record = await options.store.get(previewId);\n if (record === null) {\n throw new Error(`managed-preview: unknown preview ${previewId}`);\n }\n if (record.status === \"deleting\") {\n throw new Error(`managed-preview: preview ${previewId} is deleting`);\n }\n return publish(record);\n });\n\n const teardown = async (previewId: string): Promise<void> =>\n exclusive(previewId, async () => {\n const record = await options.store.get(previewId);\n if (record === null) return;\n const deleting: ManagedPreviewRecord<Context, Output> = {\n ...record,\n status: \"deleting\",\n updatedAt: clock(),\n };\n await options.store.put(deleting);\n try {\n await options.destroy(deleting);\n await options.store.remove(previewId);\n } catch (error) {\n await options.store.put({\n ...deleting,\n error: errorMessage(error),\n status: \"failed\",\n updatedAt: clock(),\n });\n throw error;\n }\n });\n\n const gc = async (): Promise<{\n removed: string[];\n errors: { previewId: string; error: Error }[];\n }> => {\n const now = clock();\n const expired = (await options.store.list()).filter(\n (record) => record.expiresAt !== undefined && record.expiresAt <= now,\n );\n const removed: string[] = [];\n const errors: { previewId: string; error: Error }[] = [];\n for (const record of expired) {\n try {\n await teardown(record.previewId);\n removed.push(record.previewId);\n } catch (error) {\n errors.push({\n error: error instanceof Error ? error : new Error(String(error)),\n previewId: record.previewId,\n });\n }\n }\n return { errors, removed };\n };\n\n return {\n create,\n gc,\n get: (previewId) => options.store.get(previewId),\n list: () => options.store.list(),\n resume,\n teardown,\n };\n};\n"
5
+ "/**\n * Durable, transport-neutral preview lifecycle.\n *\n * Unlike `createPreviewFleet`, this surface does not assume that the caller can\n * construct a Deployer for the destination. It is intended for control planes\n * that stream an immutable artifact to a remote fleet agent and own routing in\n * a separate edge service.\n */\n\nexport type ManagedPreviewStatus =\n | \"provisioning\"\n | \"running\"\n | \"failed\"\n | \"deleting\";\n\nexport type ManagedPreviewRecord<\n Context = Record<string, unknown>,\n Output = unknown,\n> = {\n previewId: string;\n runtimeId: string;\n status: ManagedPreviewStatus;\n context: Context;\n createdAt: number;\n updatedAt: number;\n expiresAt?: number;\n releaseId?: string;\n url?: string;\n output?: Output;\n error?: string;\n};\n\nexport type ManagedPreviewStore<\n Context = Record<string, unknown>,\n Output = unknown,\n> = {\n list: () => Promise<ManagedPreviewRecord<Context, Output>[]>;\n get: (\n previewId: string,\n ) => Promise<ManagedPreviewRecord<Context, Output> | null>;\n put: (record: ManagedPreviewRecord<Context, Output>) => Promise<void>;\n remove: (previewId: string) => Promise<void>;\n};\n\nexport type ManagedPreviewPublication<Output = unknown> = {\n releaseId: string;\n url: string;\n output?: Output;\n};\n\nexport type CreateManagedPreviewInput<Context> = {\n previewId: string;\n context: Context;\n runtimeId?: string;\n expiresAt?: number;\n releaseId?: string;\n};\n\nexport type ManagedPreviewFleetOptions<Context, Output> = {\n store: ManagedPreviewStore<Context, Output>;\n publish: (\n record: ManagedPreviewRecord<Context, Output>,\n ) => Promise<ManagedPreviewPublication<Output>>;\n destroy: (record: ManagedPreviewRecord<Context, Output>) => Promise<void>;\n createRuntimeId?: () => string;\n clock?: () => number;\n};\n\nexport type ManagedPreviewFleet<Context, Output> = {\n create: (\n input: CreateManagedPreviewInput<Context>,\n ) => Promise<ManagedPreviewRecord<Context, Output>>;\n resume: (previewId: string) => Promise<ManagedPreviewRecord<Context, Output>>;\n teardown: (previewId: string) => Promise<void>;\n list: () => Promise<ManagedPreviewRecord<Context, Output>[]>;\n get: (\n previewId: string,\n ) => Promise<ManagedPreviewRecord<Context, Output> | null>;\n gc: () => Promise<{\n removed: string[];\n errors: { previewId: string; error: Error }[];\n }>;\n};\n\nconst errorMessage = (error: unknown): string =>\n error instanceof Error ? error.message : String(error);\n\nexport const createManagedPreviewFleet = <Context, Output = unknown>(\n options: ManagedPreviewFleetOptions<Context, Output>,\n): ManagedPreviewFleet<Context, Output> => {\n const clock = options.clock ?? Date.now;\n const createRuntimeId =\n options.createRuntimeId ?? (() => crypto.randomUUID());\n const operations = new Map<string, Promise<void>>();\n\n const exclusive = async <Result>(\n previewId: string,\n operation: () => Promise<Result>,\n ): Promise<Result> => {\n const prior = operations.get(previewId) ?? Promise.resolve();\n let release: () => void = () => undefined;\n const current = new Promise<void>((resolve) => {\n release = resolve;\n });\n const queued = prior.then(() => current);\n operations.set(previewId, queued);\n await prior;\n try {\n return await operation();\n } finally {\n release();\n if (operations.get(previewId) === queued) operations.delete(previewId);\n }\n };\n\n const publish = async (\n record: ManagedPreviewRecord<Context, Output>,\n ): Promise<ManagedPreviewRecord<Context, Output>> => {\n const provisioning: ManagedPreviewRecord<Context, Output> = {\n ...record,\n status: \"provisioning\",\n updatedAt: clock(),\n };\n delete provisioning.error;\n await options.store.put(provisioning);\n\n try {\n const publication = await options.publish(provisioning);\n const running: ManagedPreviewRecord<Context, Output> = {\n ...provisioning,\n releaseId: publication.releaseId,\n url: publication.url,\n status: \"running\",\n updatedAt: clock(),\n ...(publication.output === undefined\n ? {}\n : { output: publication.output }),\n };\n await options.store.put(running);\n return running;\n } catch (error) {\n const failed: ManagedPreviewRecord<Context, Output> = {\n ...provisioning,\n error: errorMessage(error),\n status: \"failed\",\n updatedAt: clock(),\n };\n await options.store.put(failed);\n throw error;\n }\n };\n\n const create = async (\n input: CreateManagedPreviewInput<Context>,\n ): Promise<ManagedPreviewRecord<Context, Output>> =>\n exclusive(input.previewId, async () => {\n const existing = await options.store.get(input.previewId);\n const now = clock();\n const record: ManagedPreviewRecord<Context, Output> = {\n ...(existing ?? {\n createdAt: now,\n runtimeId: input.runtimeId ?? createRuntimeId(),\n }),\n context: input.context,\n previewId: input.previewId,\n status: \"provisioning\",\n updatedAt: now,\n ...(input.expiresAt === undefined\n ? existing?.expiresAt === undefined\n ? {}\n : { expiresAt: existing.expiresAt }\n : { expiresAt: input.expiresAt }),\n ...(input.releaseId === undefined\n ? {}\n : { releaseId: input.releaseId }),\n };\n return publish(record);\n });\n\n const resume = async (\n previewId: string,\n ): Promise<ManagedPreviewRecord<Context, Output>> =>\n exclusive(previewId, async () => {\n const record = await options.store.get(previewId);\n if (record === null) {\n throw new Error(`managed-preview: unknown preview ${previewId}`);\n }\n if (record.status === \"deleting\") {\n throw new Error(`managed-preview: preview ${previewId} is deleting`);\n }\n return publish(record);\n });\n\n const teardown = async (previewId: string): Promise<void> =>\n exclusive(previewId, async () => {\n const record = await options.store.get(previewId);\n if (record === null) return;\n const deleting: ManagedPreviewRecord<Context, Output> = {\n ...record,\n status: \"deleting\",\n updatedAt: clock(),\n };\n await options.store.put(deleting);\n try {\n await options.destroy(deleting);\n await options.store.remove(previewId);\n } catch (error) {\n await options.store.put({\n ...deleting,\n error: errorMessage(error),\n status: \"failed\",\n updatedAt: clock(),\n });\n throw error;\n }\n });\n\n const gc = async (): Promise<{\n removed: string[];\n errors: { previewId: string; error: Error }[];\n }> => {\n const now = clock();\n const expired = (await options.store.list()).filter(\n (record) => record.expiresAt !== undefined && record.expiresAt <= now,\n );\n const removed: string[] = [];\n const errors: { previewId: string; error: Error }[] = [];\n for (const record of expired) {\n try {\n await teardown(record.previewId);\n removed.push(record.previewId);\n } catch (error) {\n errors.push({\n error: error instanceof Error ? error : new Error(String(error)),\n previewId: record.previewId,\n });\n }\n }\n return { errors, removed };\n };\n\n return {\n create,\n gc,\n get: (previewId) => options.store.get(previewId),\n list: () => options.store.list(),\n resume,\n teardown,\n };\n};\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "24BCDEC5036EDB5064756E2164756E21",
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFA,IAAM,eAAe,CAAC,UACpB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAEhD,IAAM,4BAA4B,CACvC,YACyC;AAAA,EACzC,MAAM,QAAQ,QAAQ,SAAS,KAAK;AAAA,EACpC,MAAM,kBACJ,QAAQ,oBAAoB,MAAM,OAAO,WAAW;AAAA,EACtD,MAAM,aAAa,IAAI;AAAA,EAEvB,MAAM,YAAY,OAChB,WACA,cACoB;AAAA,IACpB,MAAM,QAAQ,WAAW,IAAI,SAAS,KAAK,QAAQ,QAAQ;AAAA,IAC3D,IAAI,UAAsB,MAAG;AAAA,MAAG;AAAA;AAAA,IAChC,MAAM,UAAU,IAAI,QAAc,CAAC,YAAY;AAAA,MAC7C,UAAU;AAAA,KACX;AAAA,IACD,MAAM,SAAS,MAAM,KAAK,MAAM,OAAO;AAAA,IACvC,WAAW,IAAI,WAAW,MAAM;AAAA,IAChC,MAAM;AAAA,IACN,IAAI;AAAA,MACF,OAAO,MAAM,UAAU;AAAA,cACvB;AAAA,MACA,QAAQ;AAAA,MACR,IAAI,WAAW,IAAI,SAAS,MAAM;AAAA,QAAQ,WAAW,OAAO,SAAS;AAAA;AAAA;AAAA,EAIzE,MAAM,UAAU,OACd,WACmD;AAAA,IACnD,MAAM,eAAsD;AAAA,SACvD;AAAA,MACH,QAAQ;AAAA,MACR,WAAW,MAAM;AAAA,IACnB;AAAA,IACA,OAAO,aAAa;AAAA,IACpB,MAAM,QAAQ,MAAM,IAAI,YAAY;AAAA,IAEpC,IAAI;AAAA,MACF,MAAM,cAAc,MAAM,QAAQ,QAAQ,YAAY;AAAA,MACtD,MAAM,UAAiD;AAAA,WAClD;AAAA,QACH,WAAW,YAAY;AAAA,QACvB,KAAK,YAAY;AAAA,QACjB,QAAQ;AAAA,QACR,WAAW,MAAM;AAAA,WACb,YAAY,WAAW,YACvB,CAAC,IACD,EAAE,QAAQ,YAAY,OAAO;AAAA,MACnC;AAAA,MACA,MAAM,QAAQ,MAAM,IAAI,OAAO;AAAA,MAC/B,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,MAAM,SAAgD;AAAA,WACjD;AAAA,QACH,OAAO,aAAa,KAAK;AAAA,QACzB,QAAQ;AAAA,QACR,WAAW,MAAM;AAAA,MACnB;AAAA,MACA,MAAM,QAAQ,MAAM,IAAI,MAAM;AAAA,MAC9B,MAAM;AAAA;AAAA;AAAA,EAIV,MAAM,SAAS,OACb,UAEA,UAAU,MAAM,WAAW,YAAY;AAAA,IACrC,MAAM,WAAW,MAAM,QAAQ,MAAM,IAAI,MAAM,SAAS;AAAA,IACxD,MAAM,MAAM,MAAM;AAAA,IAClB,MAAM,SAAgD;AAAA,SAChD,YAAY;AAAA,QACd,WAAW;AAAA,QACX,WAAW,MAAM,aAAa,gBAAgB;AAAA,MAChD;AAAA,MACA,SAAS,MAAM;AAAA,MACf,WAAW,MAAM;AAAA,MACjB,QAAQ;AAAA,MACR,WAAW;AAAA,SACP,MAAM,cAAc,YACpB,UAAU,cAAc,YACtB,CAAC,IACD,EAAE,WAAW,SAAS,UAAU,IAClC,EAAE,WAAW,MAAM,UAAU;AAAA,SAC7B,MAAM,cAAc,YACpB,CAAC,IACD,EAAE,WAAW,MAAM,UAAU;AAAA,IACnC;AAAA,IACA,OAAO,QAAQ,MAAM;AAAA,GACtB;AAAA,EAEH,MAAM,SAAS,OACb,cAEA,UAAU,WAAW,YAAY;AAAA,IAC/B,MAAM,SAAS,MAAM,QAAQ,MAAM,IAAI,SAAS;AAAA,IAChD,IAAI,WAAW,MAAM;AAAA,MACnB,MAAM,IAAI,MAAM,oCAAoC,WAAW;AAAA,IACjE;AAAA,IACA,IAAI,OAAO,WAAW,YAAY;AAAA,MAChC,MAAM,IAAI,MAAM,4BAA4B,uBAAuB;AAAA,IACrE;AAAA,IACA,OAAO,QAAQ,MAAM;AAAA,GACtB;AAAA,EAEH,MAAM,WAAW,OAAO,cACtB,UAAU,WAAW,YAAY;AAAA,IAC/B,MAAM,SAAS,MAAM,QAAQ,MAAM,IAAI,SAAS;AAAA,IAChD,IAAI,WAAW;AAAA,MAAM;AAAA,IACrB,MAAM,WAAkD;AAAA,SACnD;AAAA,MACH,QAAQ;AAAA,MACR,WAAW,MAAM;AAAA,IACnB;AAAA,IACA,MAAM,QAAQ,MAAM,IAAI,QAAQ;AAAA,IAChC,IAAI;AAAA,MACF,MAAM,QAAQ,QAAQ,QAAQ;AAAA,MAC9B,MAAM,QAAQ,MAAM,OAAO,SAAS;AAAA,MACpC,OAAO,OAAO;AAAA,MACd,MAAM,QAAQ,MAAM,IAAI;AAAA,WACnB;AAAA,QACH,OAAO,aAAa,KAAK;AAAA,QACzB,QAAQ;AAAA,QACR,WAAW,MAAM;AAAA,MACnB,CAAC;AAAA,MACD,MAAM;AAAA;AAAA,GAET;AAAA,EAEH,MAAM,KAAK,YAGL;AAAA,IACJ,MAAM,MAAM,MAAM;AAAA,IAClB,MAAM,WAAW,MAAM,QAAQ,MAAM,KAAK,GAAG,OAC3C,CAAC,WAAW,OAAO,cAAc,aAAa,OAAO,aAAa,GACpE;AAAA,IACA,MAAM,UAAoB,CAAC;AAAA,IAC3B,MAAM,SAAgD,CAAC;AAAA,IACvD,WAAW,UAAU,SAAS;AAAA,MAC5B,IAAI;AAAA,QACF,MAAM,SAAS,OAAO,SAAS;AAAA,QAC/B,QAAQ,KAAK,OAAO,SAAS;AAAA,QAC7B,OAAO,OAAO;AAAA,QACd,OAAO,KAAK;AAAA,UACV,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,UAC/D,WAAW,OAAO;AAAA,QACpB,CAAC;AAAA;AAAA,IAEL;AAAA,IACA,OAAO,EAAE,QAAQ,QAAQ;AAAA;AAAA,EAG3B,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,KAAK,CAAC,cAAc,QAAQ,MAAM,IAAI,SAAS;AAAA,IAC/C,MAAM,MAAM,QAAQ,MAAM,KAAK;AAAA,IAC/B;AAAA,IACA;AAAA,EACF;AAAA;",
8
+ "debugId": "6747D9124F0D08D764756E2164756E21",
9
9
  "names": []
10
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@absolutejs/deploy",
3
- "version": "0.19.0",
3
+ "version": "0.20.1",
4
4
  "description": "Generic Bun-project deploy pipeline. A Target (localTarget / sshTarget) is anywhere you can exec + upload — DigitalOcean droplets, Linode, Hetzner, Vultr, your own boxes. Bundled pipeline: prepare → upload → install → build → link → restart → verify. Atomic symlink swap, release history, prune, hooks. SSH shells out to system ssh/rsync — zero ssh2 deps.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -37,9 +37,6 @@
37
37
  "check:package": "bun run typecheck && bun run build && bun run test",
38
38
  "release": "bun run format && bun run check:package && bun publish"
39
39
  },
40
- "peerDependencies": {
41
- "bun-types": "^1.3.14"
42
- },
43
40
  "dependencies": {
44
41
  "google-auth-library": "10.9.0"
45
42
  },