@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.
package/dist/managedPreview.d.ts
CHANGED
package/dist/managedPreview.js
CHANGED
|
@@ -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=
|
|
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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
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.
|
|
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
|
},
|