polen 0.10.0-next.3 → 0.10.0-next.4
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 +49 -376
- package/build/api/api.d.ts +1 -0
- package/build/api/api.d.ts.map +1 -1
- package/build/api/api.js +1 -0
- package/build/api/api.js.map +1 -1
- package/build/api/static/index.d.ts +2 -0
- package/build/api/static/index.d.ts.map +1 -0
- package/build/api/static/index.js +2 -0
- package/build/api/static/index.js.map +1 -0
- package/build/api/static/manifest.d.ts +18 -0
- package/build/api/static/manifest.d.ts.map +1 -0
- package/build/api/static/manifest.js +13 -0
- package/build/api/static/manifest.js.map +1 -0
- package/build/api/static/rebase.d.ts +14 -0
- package/build/api/static/rebase.d.ts.map +1 -0
- package/build/api/static/rebase.js +110 -0
- package/build/api/static/rebase.js.map +1 -0
- package/build/api/static/static.d.ts +3 -0
- package/build/api/static/static.d.ts.map +1 -0
- package/build/api/static/static.js +3 -0
- package/build/api/static/static.js.map +1 -0
- package/build/api/vite/plugins/build.d.ts.map +1 -1
- package/build/api/vite/plugins/build.js +22 -1
- package/build/api/vite/plugins/build.js.map +1 -1
- package/build/cli/commands/static/$default.d.ts +3 -0
- package/build/cli/commands/static/$default.d.ts.map +1 -0
- package/build/cli/commands/static/$default.js +38 -0
- package/build/cli/commands/static/$default.js.map +1 -0
- package/build/cli/commands/static/rebase.d.ts +2 -0
- package/build/cli/commands/static/rebase.d.ts.map +1 -0
- package/build/cli/commands/static/rebase.js +26 -0
- package/build/cli/commands/static/rebase.js.map +1 -0
- package/build/cli/commands/static.d.ts +3 -0
- package/build/cli/commands/static.d.ts.map +1 -0
- package/build/cli/commands/static.js +5 -0
- package/build/cli/commands/static.js.map +1 -0
- package/build/lib/demos/builder.d.ts +83 -0
- package/build/lib/demos/builder.d.ts.map +1 -0
- package/build/lib/demos/builder.js +237 -0
- package/build/lib/demos/builder.js.map +1 -0
- package/build/lib/demos/config-schema.d.ts +243 -0
- package/build/lib/demos/config-schema.d.ts.map +1 -0
- package/build/lib/demos/config-schema.js +52 -0
- package/build/lib/demos/config-schema.js.map +1 -0
- package/build/lib/demos/config.d.ts +40 -0
- package/build/lib/demos/config.d.ts.map +1 -0
- package/build/lib/demos/config.js +180 -0
- package/build/lib/demos/config.js.map +1 -0
- package/build/lib/demos/index.d.ts +9 -0
- package/build/lib/demos/index.d.ts.map +1 -0
- package/build/lib/demos/index.js +8 -0
- package/build/lib/demos/index.js.map +1 -0
- package/build/lib/demos/ui/components.d.ts +33 -0
- package/build/lib/demos/ui/components.d.ts.map +1 -0
- package/build/lib/demos/ui/components.js +699 -0
- package/build/lib/demos/ui/components.js.map +1 -0
- package/build/lib/demos/ui/data-collector.d.ts +88 -0
- package/build/lib/demos/ui/data-collector.d.ts.map +1 -0
- package/build/lib/demos/ui/data-collector.js +174 -0
- package/build/lib/demos/ui/data-collector.js.map +1 -0
- package/build/lib/demos/ui/landing-page-cli.d.ts +3 -0
- package/build/lib/demos/ui/landing-page-cli.d.ts.map +1 -0
- package/build/lib/demos/ui/landing-page-cli.js +21 -0
- package/build/lib/demos/ui/landing-page-cli.js.map +1 -0
- package/build/lib/demos/ui/landing-page.d.ts +32 -0
- package/build/lib/demos/ui/landing-page.d.ts.map +1 -0
- package/build/lib/demos/ui/landing-page.js +83 -0
- package/build/lib/demos/ui/landing-page.js.map +1 -0
- package/build/lib/demos/ui/page-renderer.d.ts +26 -0
- package/build/lib/demos/ui/page-renderer.d.ts.map +1 -0
- package/build/lib/demos/ui/page-renderer.js +104 -0
- package/build/lib/demos/ui/page-renderer.js.map +1 -0
- package/build/lib/demos/utils.d.ts +14 -0
- package/build/lib/demos/utils.d.ts.map +1 -0
- package/build/lib/demos/utils.js +37 -0
- package/build/lib/demos/utils.js.map +1 -0
- package/build/lib/deployment/$$.d.ts +3 -0
- package/build/lib/deployment/$$.d.ts.map +1 -0
- package/build/lib/deployment/$$.js +3 -0
- package/build/lib/deployment/$$.js.map +1 -0
- package/build/lib/deployment/$.d.ts +2 -0
- package/build/lib/deployment/$.d.ts.map +1 -0
- package/build/lib/deployment/$.js +2 -0
- package/build/lib/deployment/$.js.map +1 -0
- package/build/lib/deployment/metadata.d.ts +32 -0
- package/build/lib/deployment/metadata.d.ts.map +1 -0
- package/build/lib/deployment/metadata.js +37 -0
- package/build/lib/deployment/metadata.js.map +1 -0
- package/build/lib/deployment/path-manager.d.ts +41 -0
- package/build/lib/deployment/path-manager.d.ts.map +1 -0
- package/build/lib/deployment/path-manager.js +157 -0
- package/build/lib/deployment/path-manager.js.map +1 -0
- package/build/lib/github-actions/git-controller.d.ts +50 -0
- package/build/lib/github-actions/git-controller.d.ts.map +1 -0
- package/build/lib/github-actions/git-controller.js +90 -0
- package/build/lib/github-actions/git-controller.js.map +1 -0
- package/build/lib/github-actions/github-actions.d.ts +7 -0
- package/build/lib/github-actions/github-actions.d.ts.map +1 -0
- package/build/lib/github-actions/github-actions.js +7 -0
- package/build/lib/github-actions/github-actions.js.map +1 -0
- package/build/lib/github-actions/index.d.ts +2 -0
- package/build/lib/github-actions/index.d.ts.map +1 -0
- package/build/lib/github-actions/index.js +2 -0
- package/build/lib/github-actions/index.js.map +1 -0
- package/build/lib/github-actions/lib/get-pr-deployments.d.ts +12 -0
- package/build/lib/github-actions/lib/get-pr-deployments.d.ts.map +1 -0
- package/build/lib/github-actions/lib/get-pr-deployments.js +51 -0
- package/build/lib/github-actions/lib/get-pr-deployments.js.map +1 -0
- package/build/lib/github-actions/pr-controller.d.ts +39 -0
- package/build/lib/github-actions/pr-controller.d.ts.map +1 -0
- package/build/lib/github-actions/pr-controller.js +122 -0
- package/build/lib/github-actions/pr-controller.js.map +1 -0
- package/build/lib/github-actions/run-step-cli.d.ts +9 -0
- package/build/lib/github-actions/run-step-cli.d.ts.map +1 -0
- package/build/lib/github-actions/run-step-cli.js +71 -0
- package/build/lib/github-actions/run-step-cli.js.map +1 -0
- package/build/lib/github-actions/runner.d.ts +17 -0
- package/build/lib/github-actions/runner.d.ts.map +1 -0
- package/build/lib/github-actions/runner.js +195 -0
- package/build/lib/github-actions/runner.js.map +1 -0
- package/build/lib/github-actions/schemas/context.d.ts +933 -0
- package/build/lib/github-actions/schemas/context.d.ts.map +1 -0
- package/build/lib/github-actions/schemas/context.js +407 -0
- package/build/lib/github-actions/schemas/context.js.map +1 -0
- package/build/lib/github-actions/schemas/index.d.ts +5 -0
- package/build/lib/github-actions/schemas/index.d.ts.map +1 -0
- package/build/lib/github-actions/schemas/index.js +5 -0
- package/build/lib/github-actions/schemas/index.js.map +1 -0
- package/build/lib/github-actions/search-module.d.ts +38 -0
- package/build/lib/github-actions/search-module.d.ts.map +1 -0
- package/build/lib/github-actions/search-module.js +40 -0
- package/build/lib/github-actions/search-module.js.map +1 -0
- package/build/lib/github-actions/step.d.ts +163 -0
- package/build/lib/github-actions/step.d.ts.map +1 -0
- package/build/lib/github-actions/step.js +121 -0
- package/build/lib/github-actions/step.js.map +1 -0
- package/build/lib/helpers.d.ts.map +1 -1
- package/build/lib/helpers.js +5 -3
- package/build/lib/helpers.js.map +1 -1
- package/build/lib/kit-temp.d.ts +54 -0
- package/build/lib/kit-temp.d.ts.map +1 -1
- package/build/lib/kit-temp.js +80 -14
- package/build/lib/kit-temp.js.map +1 -1
- package/build/lib/kit-temp.test-d.d.ts +2 -0
- package/build/lib/kit-temp.test-d.d.ts.map +1 -0
- package/build/lib/kit-temp.test-d.js +75 -0
- package/build/lib/kit-temp.test-d.js.map +1 -0
- package/build/lib/mask/$$.d.ts +3 -0
- package/build/lib/mask/$$.d.ts.map +1 -0
- package/build/lib/mask/$$.js +3 -0
- package/build/lib/mask/$$.js.map +1 -0
- package/build/lib/mask/$.d.ts +2 -0
- package/build/lib/mask/$.d.ts.map +1 -0
- package/build/lib/mask/$.js +2 -0
- package/build/lib/mask/$.js.map +1 -0
- package/build/lib/mask/apply.d.ts +86 -0
- package/build/lib/mask/apply.d.ts.map +1 -0
- package/build/lib/mask/apply.js +86 -0
- package/build/lib/mask/apply.js.map +1 -0
- package/build/lib/mask/mask.d.ts +124 -0
- package/build/lib/mask/mask.d.ts.map +1 -0
- package/build/lib/mask/mask.js +137 -0
- package/build/lib/mask/mask.js.map +1 -0
- package/build/lib/mask/mask.test-d.d.ts +2 -0
- package/build/lib/mask/mask.test-d.d.ts.map +1 -0
- package/build/lib/mask/mask.test-d.js +102 -0
- package/build/lib/mask/mask.test-d.js.map +1 -0
- package/build/lib/task/$$.d.ts +3 -0
- package/build/lib/task/$$.d.ts.map +1 -0
- package/build/lib/task/$$.js +3 -0
- package/build/lib/task/$$.js.map +1 -0
- package/build/lib/task/$.d.ts +2 -0
- package/build/lib/task/$.d.ts.map +1 -0
- package/build/lib/task/$.js +2 -0
- package/build/lib/task/$.js.map +1 -0
- package/build/lib/task/report.d.ts +28 -0
- package/build/lib/task/report.d.ts.map +1 -0
- package/build/lib/task/report.js +33 -0
- package/build/lib/task/report.js.map +1 -0
- package/build/lib/task/task.d.ts +44 -0
- package/build/lib/task/task.d.ts.map +1 -0
- package/build/lib/task/task.js +63 -0
- package/build/lib/task/task.js.map +1 -0
- package/build/lib/version-history/index.d.ts +3 -0
- package/build/lib/version-history/index.d.ts.map +1 -0
- package/build/lib/version-history/index.js +2 -0
- package/build/lib/version-history/index.js.map +1 -0
- package/build/lib/version-history/types.d.ts +64 -0
- package/build/lib/version-history/types.d.ts.map +1 -0
- package/build/lib/version-history/types.js +5 -0
- package/build/lib/version-history/types.js.map +1 -0
- package/build/lib/version-history/version-history.d.ts +85 -0
- package/build/lib/version-history/version-history.d.ts.map +1 -0
- package/build/lib/version-history/version-history.js +248 -0
- package/build/lib/version-history/version-history.js.map +1 -0
- package/build/sandbox.d.ts +2 -0
- package/build/sandbox.d.ts.map +1 -0
- package/build/sandbox.js +3 -0
- package/build/sandbox.js.map +1 -0
- package/build/template/components/Link.jsx +1 -1
- package/package.json +16 -9
- package/src/api/api.ts +1 -0
- package/src/api/singletons/markdown/markdown.test.ts +1 -1
- package/src/api/static/index.ts +1 -0
- package/src/api/static/manifest.test.ts +106 -0
- package/src/api/static/manifest.ts +16 -0
- package/src/api/static/rebase.test.ts +229 -0
- package/src/api/static/rebase.ts +140 -0
- package/src/api/static/static.ts +2 -0
- package/src/api/utils/asset-url/asset-url.test.ts +4 -4
- package/src/api/vite/plugins/build.ts +25 -1
- package/src/api/vite/plugins/core.ts +1 -1
- package/src/cli/commands/static/$default.ts +43 -0
- package/src/cli/commands/static/rebase.ts +37 -0
- package/src/cli/commands/static.ts +6 -0
- package/src/lib/demos/builder.ts +298 -0
- package/src/lib/demos/config-schema.ts +56 -0
- package/src/lib/demos/config.test.ts +193 -0
- package/src/lib/demos/config.ts +205 -0
- package/src/lib/demos/index.ts +9 -0
- package/src/lib/demos/ui/components.ts +739 -0
- package/src/lib/demos/ui/data-collector.ts +246 -0
- package/src/lib/demos/ui/landing-page-cli.ts +23 -0
- package/src/lib/demos/ui/landing-page.ts +126 -0
- package/src/lib/demos/ui/page-renderer.ts +124 -0
- package/src/lib/demos/utils.ts +43 -0
- package/src/lib/deployment/$$.ts +2 -0
- package/src/lib/deployment/$.test.ts +53 -0
- package/src/lib/deployment/$.ts +1 -0
- package/src/lib/deployment/metadata.ts +40 -0
- package/src/lib/deployment/path-manager.ts +186 -0
- package/src/lib/github-actions/git-controller.ts +151 -0
- package/src/lib/github-actions/github-actions.ts +6 -0
- package/src/lib/github-actions/index.ts +1 -0
- package/src/lib/github-actions/lib/get-pr-deployments.ts +76 -0
- package/src/lib/github-actions/pr-controller.test.ts +172 -0
- package/src/lib/github-actions/pr-controller.ts +183 -0
- package/src/lib/github-actions/run-step-cli.ts +84 -0
- package/src/lib/github-actions/runner.test.ts +192 -0
- package/src/lib/github-actions/runner.ts +226 -0
- package/src/lib/github-actions/schemas/context.ts +424 -0
- package/src/lib/github-actions/schemas/index.ts +5 -0
- package/src/lib/github-actions/search-module.test.ts +110 -0
- package/src/lib/github-actions/search-module.ts +76 -0
- package/src/lib/github-actions/step.test.ts +149 -0
- package/src/lib/github-actions/step.ts +232 -0
- package/src/lib/helpers.ts +4 -3
- package/src/lib/kit-temp.test-d.ts +115 -0
- package/src/lib/kit-temp.test.ts +127 -0
- package/src/lib/kit-temp.ts +126 -14
- package/src/lib/mask/$$.ts +2 -0
- package/src/lib/mask/$.test.ts +248 -0
- package/src/lib/mask/$.ts +1 -0
- package/src/lib/mask/apply.ts +134 -0
- package/src/lib/mask/mask.test-d.ts +144 -0
- package/src/lib/mask/mask.ts +244 -0
- package/src/lib/shiki/shiki.test.ts +1 -1
- package/src/lib/task/$$.ts +2 -0
- package/src/lib/task/$.test.ts +209 -0
- package/src/lib/task/$.ts +1 -0
- package/src/lib/task/report.ts +72 -0
- package/src/lib/task/task.ts +112 -0
- package/src/lib/version-history/index.test.ts +188 -0
- package/src/lib/version-history/index.ts +4 -0
- package/src/lib/version-history/types.ts +68 -0
- package/src/lib/version-history/version-history.ts +293 -0
- package/src/sandbox.ts +1 -0
- package/src/template/components/Link.tsx +1 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/demos/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAA;IACnD,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,oCAAoC;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;QACnE,MAAM,QAAQ,GAAG,IAAI;aAClB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;aACtC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAE7B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;IAC5B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAG,CAAW,CAAC,OAAO,CAAC,CAAA;IAC1E,CAAC;IAED,8CAA8C;IAC9C,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,OAAO,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAU,EAAE;IACzD,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAU,EAAE;IACxD,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAA;AAC9B,CAAC,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"$$.d.ts","sourceRoot":"","sources":["../../../src/lib/deployment/$$.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"$$.js","sourceRoot":"","sources":["../../../src/lib/deployment/$$.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"$.d.ts","sourceRoot":"","sources":["../../../src/lib/deployment/$.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,SAAS,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"$.js","sourceRoot":"","sources":["../../../src/lib/deployment/$.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,SAAS,CAAA"}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import { Resource } from '@wollybeard/kit';
|
2
|
+
import { z } from 'zod/v4';
|
3
|
+
export declare const DeploymentMetadataSchema: z.ZodObject<{
|
4
|
+
timestamp: z.ZodISODateTime;
|
5
|
+
pullRequest: z.ZodObject<{
|
6
|
+
number: z.ZodNumber;
|
7
|
+
branch: z.ZodString;
|
8
|
+
commit: z.ZodString;
|
9
|
+
title: z.ZodOptional<z.ZodString>;
|
10
|
+
author: z.ZodOptional<z.ZodString>;
|
11
|
+
}, z.core.$strip>;
|
12
|
+
deployment: z.ZodObject<{
|
13
|
+
url: z.ZodURL;
|
14
|
+
environment: z.ZodString;
|
15
|
+
}, z.core.$strip>;
|
16
|
+
}, z.core.$strip>;
|
17
|
+
export type DeploymentMetadata = z.infer<typeof DeploymentMetadataSchema>;
|
18
|
+
export declare const metadata: Resource.Resource<"deployment-metadata", {
|
19
|
+
timestamp: string;
|
20
|
+
pullRequest: {
|
21
|
+
number: number;
|
22
|
+
branch: string;
|
23
|
+
commit: string;
|
24
|
+
title?: string | undefined;
|
25
|
+
author?: string | undefined;
|
26
|
+
};
|
27
|
+
deployment: {
|
28
|
+
url: string;
|
29
|
+
environment: string;
|
30
|
+
};
|
31
|
+
}>;
|
32
|
+
//# sourceMappingURL=metadata.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/lib/deployment/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE1B,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;iBAanC,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEzE,eAAO,MAAM,QAAQ;;;;;;;;;;;;;EAmBnB,CAAA"}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import { Codec, Resource } from '@wollybeard/kit';
|
2
|
+
import { z } from 'zod/v4';
|
3
|
+
export const DeploymentMetadataSchema = z.object({
|
4
|
+
timestamp: z.iso.datetime(),
|
5
|
+
pullRequest: z.object({
|
6
|
+
number: z.number(),
|
7
|
+
branch: z.string(),
|
8
|
+
commit: z.string(),
|
9
|
+
title: z.string().optional(),
|
10
|
+
author: z.string().optional(),
|
11
|
+
}),
|
12
|
+
deployment: z.object({
|
13
|
+
url: z.url(),
|
14
|
+
environment: z.string(),
|
15
|
+
}),
|
16
|
+
});
|
17
|
+
export const metadata = Resource.create({
|
18
|
+
name: 'deployment-metadata',
|
19
|
+
path: '.deployment.json',
|
20
|
+
codec: Codec.fromZod(DeploymentMetadataSchema),
|
21
|
+
init: {
|
22
|
+
auto: true,
|
23
|
+
value: () => ({
|
24
|
+
timestamp: new Date().toISOString(),
|
25
|
+
pullRequest: {
|
26
|
+
number: 0,
|
27
|
+
branch: 'unknown',
|
28
|
+
commit: 'unknown',
|
29
|
+
},
|
30
|
+
deployment: {
|
31
|
+
url: '',
|
32
|
+
environment: 'unknown',
|
33
|
+
},
|
34
|
+
}),
|
35
|
+
},
|
36
|
+
});
|
37
|
+
//# sourceMappingURL=metadata.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/lib/deployment/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE1B,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC9B,CAAC;IACF,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;QACZ,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;KACxB,CAAC;CACH,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC;IAC9C,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,WAAW,EAAE;gBACX,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,SAAS;aAClB;YACD,UAAU,EAAE;gBACV,GAAG,EAAE,EAAE;gBACP,WAAW,EAAE,SAAS;aACvB;SACF,CAAC;KACH;CACF,CAAC,CAAA"}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
/**
|
2
|
+
* Deployment path management for demos
|
3
|
+
*/
|
4
|
+
export interface RedirectConfig {
|
5
|
+
from: string;
|
6
|
+
to: string;
|
7
|
+
type?: 'html' | 'meta';
|
8
|
+
}
|
9
|
+
/**
|
10
|
+
* Manages deployment paths and base path updates for demo files
|
11
|
+
*/
|
12
|
+
export declare class PathManager {
|
13
|
+
constructor();
|
14
|
+
/**
|
15
|
+
* Generate HTML redirect pages
|
16
|
+
*/
|
17
|
+
generateRedirects(redirects: RedirectConfig[], outputDir: string): Promise<void>;
|
18
|
+
/**
|
19
|
+
* Create convenience redirects for demo examples
|
20
|
+
*/
|
21
|
+
createDemoRedirects(examples: string[], outputDir: string, targetBasePath?: string): Promise<void>;
|
22
|
+
/**
|
23
|
+
* Validate deployment structure
|
24
|
+
*/
|
25
|
+
validateDeploymentStructure(deploymentDir: string): Promise<{
|
26
|
+
valid: boolean;
|
27
|
+
errors: string[];
|
28
|
+
warnings: string[];
|
29
|
+
}>;
|
30
|
+
/**
|
31
|
+
* Clean up old deployment directories
|
32
|
+
*/
|
33
|
+
cleanupOldDeployments(parentDir: string, keepVersions: string[], dryRun?: boolean): Promise<{
|
34
|
+
removed: string[];
|
35
|
+
kept: string[];
|
36
|
+
errors: string[];
|
37
|
+
}>;
|
38
|
+
private createRedirectHtml;
|
39
|
+
private isSemverDirectory;
|
40
|
+
}
|
41
|
+
//# sourceMappingURL=path-manager.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"path-manager.d.ts","sourceRoot":"","sources":["../../../src/lib/deployment/path-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,qBAAa,WAAW;;IAGtB;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtF;;OAEG;IACG,mBAAmB,CACvB,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,MAAmB,GAClC,OAAO,CAAC,IAAI,CAAC;IAShB;;OAEG;IACG,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;QAChE,KAAK,EAAE,OAAO,CAAA;QACd,MAAM,EAAE,MAAM,EAAE,CAAA;QAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;KACnB,CAAC;IA2BF;;OAEG;IACG,qBAAqB,CACzB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAwCnE,OAAO,CAAC,kBAAkB;IA8C1B,OAAO,CAAC,iBAAiB;CAI1B"}
|
@@ -0,0 +1,157 @@
|
|
1
|
+
/**
|
2
|
+
* Deployment path management for demos
|
3
|
+
*/
|
4
|
+
import { promises as fs } from 'node:fs';
|
5
|
+
import { join } from 'node:path';
|
6
|
+
/**
|
7
|
+
* Manages deployment paths and base path updates for demo files
|
8
|
+
*/
|
9
|
+
export class PathManager {
|
10
|
+
constructor() { }
|
11
|
+
/**
|
12
|
+
* Generate HTML redirect pages
|
13
|
+
*/
|
14
|
+
async generateRedirects(redirects, outputDir) {
|
15
|
+
try {
|
16
|
+
for (const redirect of redirects) {
|
17
|
+
const redirectPath = join(outputDir, redirect.from, 'index.html');
|
18
|
+
const redirectDir = join(outputDir, redirect.from);
|
19
|
+
await fs.mkdir(redirectDir, { recursive: true });
|
20
|
+
const html = this.createRedirectHtml(redirect.to);
|
21
|
+
await fs.writeFile(redirectPath, html);
|
22
|
+
}
|
23
|
+
}
|
24
|
+
catch (error) {
|
25
|
+
throw new Error(`Failed to generate redirects: ${error instanceof Error ? error.message : String(error)}`);
|
26
|
+
}
|
27
|
+
}
|
28
|
+
/**
|
29
|
+
* Create convenience redirects for demo examples
|
30
|
+
*/
|
31
|
+
async createDemoRedirects(examples, outputDir, targetBasePath = '/latest/') {
|
32
|
+
const redirects = examples.map(example => ({
|
33
|
+
from: example,
|
34
|
+
to: `${targetBasePath}${example}/`,
|
35
|
+
}));
|
36
|
+
await this.generateRedirects(redirects, outputDir);
|
37
|
+
}
|
38
|
+
/**
|
39
|
+
* Validate deployment structure
|
40
|
+
*/
|
41
|
+
async validateDeploymentStructure(deploymentDir) {
|
42
|
+
const errors = [];
|
43
|
+
const warnings = [];
|
44
|
+
try {
|
45
|
+
// Check if deployment directory exists
|
46
|
+
await fs.access(deploymentDir);
|
47
|
+
}
|
48
|
+
catch {
|
49
|
+
errors.push(`Deployment directory does not exist: ${deploymentDir}`);
|
50
|
+
return { valid: false, errors, warnings };
|
51
|
+
}
|
52
|
+
try {
|
53
|
+
// Check for index.html
|
54
|
+
const indexPath = join(deploymentDir, 'index.html');
|
55
|
+
await fs.access(indexPath);
|
56
|
+
}
|
57
|
+
catch {
|
58
|
+
warnings.push('No index.html found in deployment root');
|
59
|
+
}
|
60
|
+
return {
|
61
|
+
valid: errors.length === 0,
|
62
|
+
errors,
|
63
|
+
warnings,
|
64
|
+
};
|
65
|
+
}
|
66
|
+
/**
|
67
|
+
* Clean up old deployment directories
|
68
|
+
*/
|
69
|
+
async cleanupOldDeployments(parentDir, keepVersions, dryRun = false) {
|
70
|
+
const removed = [];
|
71
|
+
const kept = [];
|
72
|
+
const errors = [];
|
73
|
+
try {
|
74
|
+
const entries = await fs.readdir(parentDir, { withFileTypes: true });
|
75
|
+
const directories = entries
|
76
|
+
.filter(entry => entry.isDirectory())
|
77
|
+
.map(entry => entry.name);
|
78
|
+
for (const dir of directories) {
|
79
|
+
if (keepVersions.includes(dir)) {
|
80
|
+
kept.push(dir);
|
81
|
+
}
|
82
|
+
else if (this.isSemverDirectory(dir)) {
|
83
|
+
if (!dryRun) {
|
84
|
+
try {
|
85
|
+
await fs.rm(join(parentDir, dir), { recursive: true, force: true });
|
86
|
+
removed.push(dir);
|
87
|
+
}
|
88
|
+
catch (error) {
|
89
|
+
errors.push(`Failed to remove ${dir}: ${error}`);
|
90
|
+
}
|
91
|
+
}
|
92
|
+
else {
|
93
|
+
removed.push(dir); // Dry run - just track what would be removed
|
94
|
+
}
|
95
|
+
}
|
96
|
+
else {
|
97
|
+
kept.push(dir); // Keep non-semver directories
|
98
|
+
}
|
99
|
+
}
|
100
|
+
}
|
101
|
+
catch (error) {
|
102
|
+
throw new Error(`Failed to cleanup deployments in ${parentDir}: ${error instanceof Error ? error.message : String(error)}`);
|
103
|
+
}
|
104
|
+
return { removed, kept, errors };
|
105
|
+
}
|
106
|
+
// Private helper methods
|
107
|
+
createRedirectHtml(targetUrl) {
|
108
|
+
return `<!DOCTYPE html>
|
109
|
+
<html lang="en">
|
110
|
+
<head>
|
111
|
+
<meta charset="UTF-8">
|
112
|
+
<meta http-equiv="refresh" content="0; url=${targetUrl}">
|
113
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
114
|
+
<title>Redirecting...</title>
|
115
|
+
<style>
|
116
|
+
body {
|
117
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
118
|
+
display: flex;
|
119
|
+
align-items: center;
|
120
|
+
justify-content: center;
|
121
|
+
height: 100vh;
|
122
|
+
margin: 0;
|
123
|
+
background: #f5f5f5;
|
124
|
+
}
|
125
|
+
.redirect-message {
|
126
|
+
text-align: center;
|
127
|
+
padding: 2rem;
|
128
|
+
background: white;
|
129
|
+
border-radius: 8px;
|
130
|
+
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
|
131
|
+
}
|
132
|
+
.redirect-message a {
|
133
|
+
color: #0066cc;
|
134
|
+
text-decoration: none;
|
135
|
+
}
|
136
|
+
.redirect-message a:hover {
|
137
|
+
text-decoration: underline;
|
138
|
+
}
|
139
|
+
</style>
|
140
|
+
</head>
|
141
|
+
<body>
|
142
|
+
<div class="redirect-message">
|
143
|
+
<h1>Redirecting...</h1>
|
144
|
+
<p>If you are not redirected automatically, <a href="${targetUrl}">click here</a>.</p>
|
145
|
+
</div>
|
146
|
+
<script>
|
147
|
+
window.location.href = '${targetUrl}';
|
148
|
+
</script>
|
149
|
+
</body>
|
150
|
+
</html>`;
|
151
|
+
}
|
152
|
+
isSemverDirectory(name) {
|
153
|
+
// Check if directory name looks like a semver version
|
154
|
+
return /^\d+\.\d+\.\d+/.test(name);
|
155
|
+
}
|
156
|
+
}
|
157
|
+
//# sourceMappingURL=path-manager.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"path-manager.js","sourceRoot":"","sources":["../../../src/lib/deployment/path-manager.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
/**
|
2
|
+
* Git controller for GitHub Actions
|
3
|
+
* Provides simple git operations without exposing subprocess details
|
4
|
+
*/
|
5
|
+
import type { $ as ZxDollar } from 'zx';
|
6
|
+
export interface GitCommitOptions {
|
7
|
+
/**
|
8
|
+
* Commit message
|
9
|
+
*/
|
10
|
+
message: string;
|
11
|
+
/**
|
12
|
+
* Optional commit body for additional details
|
13
|
+
*/
|
14
|
+
body?: string;
|
15
|
+
/**
|
16
|
+
* Files or patterns to stage (defaults to '.')
|
17
|
+
*/
|
18
|
+
add?: string | string[];
|
19
|
+
/**
|
20
|
+
* Working directory (defaults to current directory)
|
21
|
+
*/
|
22
|
+
cwd?: string;
|
23
|
+
/**
|
24
|
+
* Whether to push after committing (defaults to true)
|
25
|
+
*/
|
26
|
+
push?: boolean;
|
27
|
+
/**
|
28
|
+
* Whether to automatically configure the user to be GitHub (defaults to true)
|
29
|
+
*/
|
30
|
+
autoConfigureUser?: boolean;
|
31
|
+
}
|
32
|
+
export interface GitController {
|
33
|
+
/**
|
34
|
+
* Create a commit with the staged changes
|
35
|
+
*/
|
36
|
+
commit(options: GitCommitOptions): Promise<boolean>;
|
37
|
+
/**
|
38
|
+
* Check if there are any changes (staged or unstaged)
|
39
|
+
*/
|
40
|
+
hasChanges(cwd?: string): Promise<boolean>;
|
41
|
+
/**
|
42
|
+
* Configure git user for commits
|
43
|
+
*/
|
44
|
+
configureUser(name?: string, email?: string): Promise<void>;
|
45
|
+
}
|
46
|
+
/**
|
47
|
+
* Create a git controller instance
|
48
|
+
*/
|
49
|
+
export declare function createGitController($: typeof ZxDollar): GitController;
|
50
|
+
//# sourceMappingURL=git-controller.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"git-controller.d.ts","sourceRoot":"","sources":["../../../src/lib/github-actions/git-controller.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,CAAC,IAAI,QAAQ,EAAE,MAAM,IAAI,CAAA;AAEvC,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACvB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAEnD;;OAEG;IACH,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE1C;;OAEG;IACH,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,QAAQ,GAAG,aAAa,CAgGrE"}
|
@@ -0,0 +1,90 @@
|
|
1
|
+
/**
|
2
|
+
* Git controller for GitHub Actions
|
3
|
+
* Provides simple git operations without exposing subprocess details
|
4
|
+
*/
|
5
|
+
/**
|
6
|
+
* Create a git controller instance
|
7
|
+
*/
|
8
|
+
export function createGitController($) {
|
9
|
+
const api = {
|
10
|
+
async commit(options) {
|
11
|
+
const { message, body, add = '.', cwd, push = true, autoConfigureUser = true, } = options;
|
12
|
+
const hasChanges = await api.hasChanges('gh-pages');
|
13
|
+
if (!hasChanges) {
|
14
|
+
console.log('No changes to commit');
|
15
|
+
return false;
|
16
|
+
}
|
17
|
+
if (autoConfigureUser) {
|
18
|
+
await api.configureUser();
|
19
|
+
}
|
20
|
+
try {
|
21
|
+
// Stage files
|
22
|
+
const filesToAdd = Array.isArray(add) ? add : [add];
|
23
|
+
for (const pattern of filesToAdd) {
|
24
|
+
if (cwd) {
|
25
|
+
await $ `cd ${cwd} && git add ${pattern}`;
|
26
|
+
}
|
27
|
+
else {
|
28
|
+
await $ `git add ${pattern}`;
|
29
|
+
}
|
30
|
+
}
|
31
|
+
// Check if there are changes to commit
|
32
|
+
const statusCmd = cwd ? $ `cd ${cwd} && git status --porcelain` : $ `git status --porcelain`;
|
33
|
+
const status = await statusCmd;
|
34
|
+
if (!status.stdout.trim()) {
|
35
|
+
return false; // No changes to commit
|
36
|
+
}
|
37
|
+
// Build commit message
|
38
|
+
let fullMessage = message;
|
39
|
+
if (body) {
|
40
|
+
fullMessage = `${message}\n\n${body}`;
|
41
|
+
}
|
42
|
+
// Commit
|
43
|
+
if (cwd) {
|
44
|
+
await $ `cd ${cwd} && git commit -m ${fullMessage}`;
|
45
|
+
}
|
46
|
+
else {
|
47
|
+
await $ `git commit -m ${fullMessage}`;
|
48
|
+
}
|
49
|
+
// Push if requested
|
50
|
+
if (push) {
|
51
|
+
if (cwd) {
|
52
|
+
await $ `cd ${cwd} && git push`;
|
53
|
+
}
|
54
|
+
else {
|
55
|
+
await $ `git push`;
|
56
|
+
}
|
57
|
+
}
|
58
|
+
return true;
|
59
|
+
}
|
60
|
+
catch (error) {
|
61
|
+
throw new Error(`Git commit failed: ${error}`);
|
62
|
+
}
|
63
|
+
},
|
64
|
+
async hasChanges(cwd) {
|
65
|
+
try {
|
66
|
+
const cmd = cwd
|
67
|
+
? $ `cd ${cwd} && git status --porcelain`
|
68
|
+
: $ `git status --porcelain`;
|
69
|
+
const result = await cmd;
|
70
|
+
return result.stdout.trim().length > 0;
|
71
|
+
}
|
72
|
+
catch (error) {
|
73
|
+
throw new Error(`Failed to check git status: ${error}`);
|
74
|
+
}
|
75
|
+
},
|
76
|
+
async configureUser(name, email) {
|
77
|
+
try {
|
78
|
+
const userName = name || 'github-actions[bot]';
|
79
|
+
const userEmail = email || 'github-actions[bot]@users.noreply.github.com';
|
80
|
+
await $ `git config user.name ${userName}`;
|
81
|
+
await $ `git config user.email ${userEmail}`;
|
82
|
+
}
|
83
|
+
catch (error) {
|
84
|
+
throw new Error(`Failed to configure git user: ${error}`);
|
85
|
+
}
|
86
|
+
},
|
87
|
+
};
|
88
|
+
return api;
|
89
|
+
}
|
90
|
+
//# sourceMappingURL=git-controller.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"git-controller.js","sourceRoot":"","sources":["../../../src/lib/github-actions/git-controller.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"github-actions.d.ts","sourceRoot":"","sources":["../../../src/lib/github-actions/github-actions.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"github-actions.js","sourceRoot":"","sources":["../../../src/lib/github-actions/github-actions.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/github-actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/github-actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAA"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import type { GitHub } from '@actions/github/lib/utils.ts';
|
2
|
+
export interface Deployment {
|
3
|
+
sha: string;
|
4
|
+
shortSha: string;
|
5
|
+
createdAt: string;
|
6
|
+
status?: string;
|
7
|
+
}
|
8
|
+
/**
|
9
|
+
* Fetch deployments for a specific PR using GitHub API
|
10
|
+
*/
|
11
|
+
export declare function fetchPullRequestDeployments(github: InstanceType<typeof GitHub>, owner: string, repo: string, prNumber: string | number): Promise<Deployment[]>;
|
12
|
+
//# sourceMappingURL=get-pr-deployments.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get-pr-deployments.d.ts","sourceRoot":"","sources":["../../../../src/lib/github-actions/lib/get-pr-deployments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAE1D,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,YAAY,CAAC,OAAO,MAAM,CAAC,EACnC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,MAAM,GACxB,OAAO,CAAC,UAAU,EAAE,CAAC,CA0DvB"}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
/**
|
2
|
+
* Fetch deployments for a specific PR using GitHub API
|
3
|
+
*/
|
4
|
+
export async function fetchPullRequestDeployments(github, owner, repo, prNumber) {
|
5
|
+
const deployments = [];
|
6
|
+
try {
|
7
|
+
// Get all deployments for this PR's environment
|
8
|
+
const { data: ghDeployments } = await github.rest.repos.listDeployments({
|
9
|
+
owner,
|
10
|
+
repo,
|
11
|
+
environment: `pr-${prNumber}`,
|
12
|
+
per_page: 100,
|
13
|
+
});
|
14
|
+
// Debug logging
|
15
|
+
console.log(`Found ${ghDeployments.length} deployments for PR #${prNumber}`);
|
16
|
+
// Process each deployment
|
17
|
+
for (const deployment of ghDeployments) {
|
18
|
+
console.log(`Processing deployment: ${deployment.id}, SHA: ${deployment.sha.substring(0, 7)}, Ref: ${deployment.ref}`);
|
19
|
+
// Get the latest status for this deployment
|
20
|
+
const { data: statuses } = await github.rest.repos.listDeploymentStatuses({
|
21
|
+
owner,
|
22
|
+
repo,
|
23
|
+
deployment_id: deployment.id,
|
24
|
+
per_page: 1,
|
25
|
+
});
|
26
|
+
const latestStatus = statuses[0];
|
27
|
+
const state = latestStatus?.state;
|
28
|
+
console.log(` Status: ${state || 'no status'}`);
|
29
|
+
// Include successful and inactive deployments
|
30
|
+
if (state === 'success' || state === 'inactive') {
|
31
|
+
const shortSha = deployment.sha.substring(0, 7);
|
32
|
+
deployments.push({
|
33
|
+
sha: deployment.sha,
|
34
|
+
shortSha,
|
35
|
+
createdAt: deployment.created_at,
|
36
|
+
status: state,
|
37
|
+
});
|
38
|
+
console.log(` Added to deployments list`);
|
39
|
+
}
|
40
|
+
}
|
41
|
+
// Sort by creation date (newest first)
|
42
|
+
deployments.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
|
43
|
+
console.log(`Returning ${deployments.length} successful deployments for PR #${prNumber}`);
|
44
|
+
}
|
45
|
+
catch (error) {
|
46
|
+
console.error(`Error fetching deployments for PR #${prNumber}:`, error);
|
47
|
+
throw error;
|
48
|
+
}
|
49
|
+
return deployments;
|
50
|
+
}
|
51
|
+
//# sourceMappingURL=get-pr-deployments.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get-pr-deployments.js","sourceRoot":"","sources":["../../../../src/lib/github-actions/lib/get-pr-deployments.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAmC,EACnC,KAAa,EACb,IAAY,EACZ,QAAyB;IAEzB,MAAM,WAAW,GAAiB,EAAE,CAAA;IAEpC,IAAI,CAAC;QACH,gDAAgD;QAChD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;YACtE,KAAK;YACL,IAAI;YACJ,WAAW,EAAE,MAAM,QAAQ,EAAE;YAC7B,QAAQ,EAAE,GAAG;SACd,CAAC,CAAA;QAEF,gBAAgB;QAChB,OAAO,CAAC,GAAG,CAAC,SAAS,aAAa,CAAC,MAAM,wBAAwB,QAAQ,EAAE,CAAC,CAAA;QAE5E,0BAA0B;QAC1B,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CACT,0BAA0B,UAAU,CAAC,EAAE,UAAU,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,UAAU,CAAC,GAAG,EAAE,CAC1G,CAAA;YAED,4CAA4C;YAC5C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;gBACxE,KAAK;gBACL,IAAI;gBACJ,aAAa,EAAE,UAAU,CAAC,EAAE;gBAC5B,QAAQ,EAAE,CAAC;aACZ,CAAC,CAAA;YAEF,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,KAAK,GAAG,YAAY,EAAE,KAAK,CAAA;YAEjC,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,IAAI,WAAW,EAAE,CAAC,CAAA;YAEhD,8CAA8C;YAC9C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAE/C,WAAW,CAAC,IAAI,CAAC;oBACf,GAAG,EAAE,UAAU,CAAC,GAAG;oBACnB,QAAQ;oBACR,SAAS,EAAE,UAAU,CAAC,UAAU;oBAChC,MAAM,EAAE,KAAK;iBACd,CAAC,CAAA;gBACF,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;QAED,uCAAuC;QACvC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QAE7F,OAAO,CAAC,GAAG,CAAC,aAAa,WAAW,CAAC,MAAM,mCAAmC,QAAQ,EAAE,CAAC,CAAA;IAC3F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAA;QACvE,MAAM,KAAK,CAAA;IACb,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC"}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import type { Context } from '@actions/github/lib/context.ts';
|
2
|
+
import type { GitHub } from '@actions/github/lib/utils.ts';
|
3
|
+
import { type Deployment } from './lib/get-pr-deployments.ts';
|
4
|
+
export interface CommentOptions {
|
5
|
+
/**
|
6
|
+
* Unique identifier for the comment. Used to find and update existing comments.
|
7
|
+
* If not provided, uses the current step name as the ID.
|
8
|
+
*/
|
9
|
+
id?: string;
|
10
|
+
/**
|
11
|
+
* Markdown content of the comment
|
12
|
+
*/
|
13
|
+
content: string;
|
14
|
+
/**
|
15
|
+
* Whether this comment is optional. If true, errors are logged but not thrown
|
16
|
+
* when not in a PR context. Defaults to false.
|
17
|
+
*/
|
18
|
+
optional?: boolean;
|
19
|
+
}
|
20
|
+
/**
|
21
|
+
* Create a PR controller. Returns a no-op controller when not in PR context.
|
22
|
+
*/
|
23
|
+
export declare function createPullRequestController(github: InstanceType<typeof GitHub>, context: Context, defaultCommentId?: string): PullRequestController;
|
24
|
+
/**
|
25
|
+
* PR Controller for GitHub Actions
|
26
|
+
* Provides easy-to-use methods for interacting with pull requests
|
27
|
+
*/
|
28
|
+
export declare class PullRequestController {
|
29
|
+
private github;
|
30
|
+
private context;
|
31
|
+
private defaultCommentId?;
|
32
|
+
readonly isActive: boolean;
|
33
|
+
readonly number: number;
|
34
|
+
constructor(github: InstanceType<typeof GitHub>, context: Context, prNumber: number | null, defaultCommentId?: string | undefined);
|
35
|
+
comment(options: CommentOptions): Promise<void>;
|
36
|
+
fetchDeployments(): Promise<Deployment[]>;
|
37
|
+
deleteComment(id: string): Promise<void>;
|
38
|
+
}
|
39
|
+
//# sourceMappingURL=pr-controller.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pr-controller.d.ts","sourceRoot":"","sources":["../../../src/lib/github-actions/pr-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,KAAK,UAAU,EAA+B,MAAM,6BAA6B,CAAA;AAI1F,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,YAAY,CAAC,OAAO,MAAM,CAAC,EACnC,OAAO,EAAE,OAAO,EAChB,gBAAgB,CAAC,EAAE,MAAM,GACxB,qBAAqB,CAavB;AAkBD;;;GAGG;AACH,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IAEf,OAAO,CAAC,gBAAgB,CAAC;IAP3B,SAAgB,QAAQ,EAAE,OAAO,CAAA;IACjC,SAAgB,MAAM,EAAE,MAAM,CAAA;gBAGpB,MAAM,EAAE,YAAY,CAAC,OAAO,MAAM,CAAC,EACnC,OAAO,EAAE,OAAO,EACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACf,gBAAgB,CAAC,EAAE,MAAM,YAAA;IAM7B,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA+C/C,gBAAgB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAazC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA2C/C"}
|