@kungfu-tech/buildchain 4.1.3-alpha.0 → 4.1.3-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/architecture/action-taxonomy.json +16 -0
- package/architecture/agent-change-map.md +245 -4
- package/architecture/ci-lane-change-budget.json +289 -0
- package/architecture/decisions/0005-minimal-consumer-contract.md +122 -0
- package/architecture/decisions/0006-business-attempt-journal.md +89 -0
- package/architecture/decisions/0007-hosted-pipeline-controller.md +106 -0
- package/architecture/decisions/0008-pipeline-product-publication.md +99 -0
- package/architecture/internal-capabilities.json +340 -4
- package/architecture/maintainability-debt.json +3 -1
- package/architecture/maintainability-policy.json +8 -8
- package/architecture/minimal-consumer-migration.json +7558 -0
- package/architecture/release-topology.json +248 -11
- package/architecture/universal-workflow-bootstrap.json +10 -0
- package/architecture/universal-workflow-capability-policy.json +6 -6
- package/architecture/workflow-taxonomy.json +55 -0
- package/contracts/release-discussion-v1.schema.json +3 -0
- package/dist/readers/business-attempt.cjs +805 -0
- package/dist/readers/release-discussion.cjs +4 -0
- package/dist/site/buildchain-contract.json +7 -5
- package/dist/site/buildchain-site.json +25 -15
- package/dist/site/capability-registry.json +3 -3
- package/dist/site/kfd-claims.json +311 -10
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/manual-registry.json +1 -1
- package/dist/site/node-api-registry.json +9 -9
- package/dist/site/page-registry.json +20 -10
- package/dist/site/public-surface-audit.json +201 -7
- package/dist/site/publication-authority-registry.json +121 -1
- package/dist/site/publication-registry.json +4 -4
- package/dist/site/site-manifest.json +5 -5
- package/dist/site/workflow-registry.json +416 -7
- package/docs/node-api-reference.md +12 -12
- package/docs/release-discussions.md +44 -5
- package/docs/runtime-entry.md +45 -5
- package/docs/workflow-catalog.md +5 -0
- package/package.json +4 -3
- package/packages/core/consumer/contract/entries.js +85 -0
- package/packages/core/consumer/contract/examples.js +96 -0
- package/packages/core/consumer/contract/identity.js +65 -0
- package/packages/core/consumer/contract/inspection.js +45 -0
- package/packages/core/consumer/contract/plan.js +99 -0
- package/packages/core/consumer/contract/products.js +101 -0
- package/packages/core/consumer/contract/shape.js +46 -0
- package/packages/core/dev-delivery/candidate/admission.js +9 -5
- package/packages/core/dev-delivery/candidate/reservation.js +11 -0
- package/packages/core/dev-delivery/candidate/source-paths.js +12 -4
- package/packages/core/dev-delivery/native/actions.js +7 -1
- package/packages/core/dev-delivery/native/heartbeat-action.js +16 -0
- package/packages/core/dev-delivery/native/heartbeat.js +6 -4
- package/packages/core/dev-delivery/queue/landing-action.js +5 -0
- package/packages/core/governance/buildchain-publication-authority.js +5 -0
- package/packages/core/paper/operations/bootstrap.js +2 -0
- package/packages/core/paper/paper-npm-bootstrap.js +2 -2
- package/packages/core/providers/github/attempt-index.js +60 -0
- package/packages/core/providers/github/attempt-journal.js +154 -0
- package/packages/core/providers/github/discussions/materials.js +23 -7
- package/packages/core/providers/github/discussions/transport.js +16 -5
- package/packages/core/providers/github/pipeline-checkout.js +49 -0
- package/packages/core/providers/github/pipeline-events.js +52 -0
- package/packages/core/providers/github/pipeline-integration.js +95 -0
- package/packages/core/providers/github/pipeline-policy.js +213 -0
- package/packages/core/providers/github/pipeline-product-payload.js +50 -0
- package/packages/core/providers/github/pipeline-product-release.js +191 -0
- package/packages/core/providers/github/pipeline-publication-artifacts.js +153 -0
- package/packages/core/providers/github/pipeline-run-entry.js +86 -0
- package/packages/core/providers/github/pipeline-runs.js +132 -0
- package/packages/core/providers/github/pipeline-source.js +178 -0
- package/packages/core/providers/github/pipeline-version.js +201 -0
- package/packages/core/providers/github/pipeline-worker.js +108 -0
- package/packages/core/publication/candidate/registry-hydration.js +2 -2
- package/packages/core/publication/npm/pack-preview.js +2 -2
- package/packages/core/publication/npm/pack-result.js +31 -0
- package/packages/core/publication/npm/package.js +3 -6
- package/packages/core/publication/npm/pipeline-channel.js +87 -0
- package/packages/core/publication/npm/pipeline-provider.js +109 -0
- package/packages/core/publication/npm/registry.js +12 -9
- package/packages/core/publication/pipeline/actions.js +100 -0
- package/packages/core/publication/pipeline/apply.js +182 -0
- package/packages/core/publication/pipeline/build-segments.js +107 -0
- package/packages/core/publication/pipeline/capsules.js +89 -0
- package/packages/core/publication/pipeline/context.js +39 -0
- package/packages/core/publication/pipeline/development-anchor.js +91 -0
- package/packages/core/publication/pipeline/development-current.js +63 -0
- package/packages/core/publication/pipeline/development-pr.js +85 -0
- package/packages/core/publication/pipeline/development-proof.js +76 -0
- package/packages/core/publication/pipeline/development-transition.js +112 -0
- package/packages/core/publication/pipeline/distribution.js +124 -0
- package/packages/core/publication/pipeline/documents.js +156 -0
- package/packages/core/publication/pipeline/effects.js +162 -0
- package/packages/core/publication/pipeline/files.js +66 -0
- package/packages/core/publication/pipeline/imported-materials.js +32 -0
- package/packages/core/publication/pipeline/journal.js +110 -0
- package/packages/core/publication/pipeline/next-development.js +116 -0
- package/packages/core/publication/pipeline/pack.js +151 -0
- package/packages/core/publication/pipeline/package-policy.js +22 -0
- package/packages/core/publication/pipeline/plan.js +114 -0
- package/packages/core/publication/pipeline/prepare.js +151 -0
- package/packages/core/publication/pipeline/qualification.js +170 -0
- package/packages/core/publication/pipeline/qualify.js +104 -0
- package/packages/core/publication/pipeline/recovery-admission.js +122 -0
- package/packages/core/publication/pipeline/recovery-build-download.js +80 -0
- package/packages/core/publication/pipeline/recovery-build-plan.js +122 -0
- package/packages/core/publication/pipeline/recovery-build-readback.js +68 -0
- package/packages/core/publication/pipeline/recovery-capsules.js +54 -0
- package/packages/core/publication/pipeline/recovery-import.js +80 -0
- package/packages/core/publication/pipeline/recovery-inspection.js +218 -0
- package/packages/core/publication/pipeline/recovery-materials.js +104 -0
- package/packages/core/publication/pipeline/recovery-plan.js +46 -0
- package/packages/core/publication/pipeline/recovery-prepare.js +73 -0
- package/packages/core/publication/pipeline/recovery-qualification.js +128 -0
- package/packages/core/publication/pipeline/recovery-readback.js +56 -0
- package/packages/core/publication/pipeline/recovery-signing.js +58 -0
- package/packages/core/publication/pipeline/sealed-products.js +79 -0
- package/packages/core/publication/pipeline/settle.js +43 -0
- package/packages/core/publication/pipeline/signing.js +140 -0
- package/packages/core/publication/pipeline/source-plan.js +83 -0
- package/packages/core/publication/pipeline/version.js +81 -0
- package/packages/core/publication/publication-reproducibility.js +2 -2
- package/packages/core/release/discussion/binary.js +11 -0
- package/packages/core/release/discussion/checkpoints.js +45 -4
- package/packages/core/release/discussion/envelope.js +1 -0
- package/packages/core/release/discussion/evidence.js +51 -0
- package/packages/core/release/discussion/presentation.js +92 -0
- package/packages/core/release/discussion/publication.js +3 -1
- package/packages/core/release/discussion/qualification.js +1 -0
- package/packages/core/release/discussion/reader.js +9 -0
- package/packages/core/release/discussion/session.js +2 -0
- package/packages/core/release/discussion/store.js +28 -31
- package/packages/core/release/discussion/threads.js +83 -0
- package/packages/core/release/promote-candidate/product-provider-adapters.js +4 -3
- package/packages/core/release/promote-ref/internal/npm-existing-evidence.js +2 -1
- package/packages/core/release/promote-ref/internal/publish-command.js +16 -5
- package/packages/core/runtime/buildchain-domain.wasm +0 -0
- package/packages/core/runtime/domain-wasm-artifact.js +2 -2
- package/packages/core/runtime/entry/actions.js +27 -25
- package/packages/core/runtime/entry/attempt.js +25 -0
- package/packages/core/runtime/entry/selection.js +14 -0
- package/packages/core/runtime/entry/source.js +62 -0
- package/packages/core/workflow/attempt/identity.js +165 -0
- package/packages/core/workflow/attempt/journal.js +87 -0
- package/packages/core/workflow/attempt/materials.js +72 -0
- package/packages/core/workflow/attempt/reader-entry.js +12 -0
- package/packages/core/workflow/attempt/reader.js +149 -0
- package/packages/core/workflow/attempt/records.js +153 -0
- package/packages/core/workflow/attempt/store.js +75 -0
- package/packages/core/workflow/commands/pipeline-build.mjs +23 -0
- package/packages/core/workflow/pipeline/action-output.js +11 -0
- package/packages/core/workflow/pipeline/actions.js +62 -0
- package/packages/core/workflow/pipeline/build-control.js +140 -0
- package/packages/core/workflow/pipeline/build-evidence.js +92 -0
- package/packages/core/workflow/pipeline/build-qualification.js +145 -0
- package/packages/core/workflow/pipeline/build-result.js +69 -0
- package/packages/core/workflow/pipeline/build.js +95 -0
- package/packages/core/workflow/pipeline/cancellation.js +169 -0
- package/packages/core/workflow/pipeline/channel-control.js +127 -0
- package/packages/core/workflow/pipeline/controller.js +133 -0
- package/packages/core/workflow/pipeline/delivery-control.js +204 -0
- package/packages/core/workflow/pipeline/delivery-observation.js +118 -0
- package/packages/core/workflow/pipeline/delivery-request.js +198 -0
- package/packages/core/workflow/pipeline/events.js +84 -0
- package/packages/core/workflow/pipeline/fence.js +42 -0
- package/packages/core/workflow/pipeline/group-control.js +56 -0
- package/packages/core/workflow/pipeline/guard-build.js +37 -0
- package/packages/core/workflow/pipeline/guard.js +156 -0
- package/packages/core/workflow/pipeline/host.js +114 -0
- package/packages/core/workflow/pipeline/materials.js +58 -0
- package/packages/core/workflow/pipeline/notifications.js +36 -0
- package/packages/core/workflow/pipeline/parent-notification.js +27 -0
- package/packages/core/workflow/pipeline/platforms.js +21 -0
- package/packages/core/workflow/pipeline/progress.js +108 -0
- package/packages/core/workflow/pipeline/projection.js +20 -0
- package/packages/core/workflow/pipeline/reconcile.js +194 -0
- package/packages/core/workflow/pipeline/recovery-action.js +30 -0
- package/packages/core/workflow/pipeline/recovery-admission.js +122 -0
- package/packages/core/workflow/pipeline/recovery-build-control.js +95 -0
- package/packages/core/workflow/pipeline/recovery-build-evidence.js +71 -0
- package/packages/core/workflow/pipeline/recovery-build.js +121 -0
- package/packages/core/workflow/pipeline/recovery-controller.js +91 -0
- package/packages/core/workflow/pipeline/recovery-integration.js +66 -0
- package/packages/core/workflow/pipeline/recovery-merge-proof.js +90 -0
- package/packages/core/workflow/pipeline/recovery-ownership-settlement.js +150 -0
- package/packages/core/workflow/pipeline/recovery-ownership.js +91 -0
- package/packages/core/workflow/pipeline/recovery-plan.js +126 -0
- package/packages/core/workflow/pipeline/recovery-runtime.js +68 -0
- package/packages/core/workflow/pipeline/recovery-session.js +129 -0
- package/packages/core/workflow/pipeline/recovery-transition.js +135 -0
- package/packages/core/workflow/pipeline/recovery-unrecorded-build.js +74 -0
- package/packages/core/workflow/pipeline/runtime-source.js +111 -0
- package/packages/core/workflow/pipeline/selection.js +106 -0
- package/packages/core/workflow/pipeline/session.js +72 -0
- package/packages/core/workflow/pipeline/settlement.js +137 -0
- package/packages/core/workflow/pipeline/wake.js +38 -0
- package/packages/core/workflow/pipeline/web-status.js +108 -0
- package/scripts/build-release-discussion-reader.mjs +11 -7
- package/scripts/check-pipeline-publication-topology.mjs +36 -0
- package/scripts/check-release-topology.mjs +6 -1
- package/scripts/generate-minimal-consumer-contract.mjs +155 -0
- package/scripts/verify-golden-path.mjs +5 -1
- package/templates/minimal-consumer/binary/.buildchain/buildchain.toml +45 -0
- package/templates/minimal-consumer/binary/.github/workflows/buildchain-recover.yml +30 -0
- package/templates/minimal-consumer/binary/.github/workflows/buildchain.yml +28 -0
- package/templates/minimal-consumer/binary/package.json +6 -0
- package/templates/minimal-consumer/binary/src/build.mjs +5 -0
- package/templates/minimal-consumer/binary/src/hello.c +2 -0
- package/templates/minimal-consumer/binary/src/verify.mjs +3 -0
- package/templates/minimal-consumer/npm/.buildchain/buildchain.toml +46 -0
- package/templates/minimal-consumer/npm/.github/workflows/buildchain-recover.yml +30 -0
- package/templates/minimal-consumer/npm/.github/workflows/buildchain.yml +28 -0
- package/templates/minimal-consumer/npm/package.json +6 -0
- package/templates/minimal-consumer/npm/src/build.mjs +5 -0
- package/templates/minimal-consumer/npm/src/verify.mjs +3 -0
- package/templates/minimal-consumer/paper/.buildchain/buildchain.toml +45 -0
- package/templates/minimal-consumer/paper/.github/workflows/buildchain-recover.yml +30 -0
- package/templates/minimal-consumer/paper/.github/workflows/buildchain.yml +28 -0
- package/templates/minimal-consumer/paper/package.json +6 -0
- package/templates/minimal-consumer/paper/src/build.mjs +12 -0
- package/templates/minimal-consumer/paper/src/verify.mjs +3 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
fs.mkdirSync("dist", { recursive: true });
|
|
3
|
+
import { execFileSync } from "node:child_process";
|
|
4
|
+
execFileSync("cc", ["src/hello.c", "-o", "dist/hello"], { stdio: "inherit" });
|
|
5
|
+
execFileSync("tar", ["-czf", "dist/hello.tar.gz", "-C", "dist", "hello"], { stdio: "inherit" });
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
schema = 2
|
|
2
|
+
|
|
3
|
+
[[products]]
|
|
4
|
+
id = "main"
|
|
5
|
+
type = "npm"
|
|
6
|
+
platforms = ["linux-x64"]
|
|
7
|
+
build = ["node src/build.mjs"]
|
|
8
|
+
verify = ["node src/verify.mjs"]
|
|
9
|
+
|
|
10
|
+
[[products.artifacts]]
|
|
11
|
+
id = "main"
|
|
12
|
+
path = "dist/package"
|
|
13
|
+
kind = "npm-package"
|
|
14
|
+
|
|
15
|
+
[[products.targets]]
|
|
16
|
+
provider = "npm"
|
|
17
|
+
artifacts = ["main"]
|
|
18
|
+
access = "public"
|
|
19
|
+
|
|
20
|
+
[version]
|
|
21
|
+
strategy = "semver"
|
|
22
|
+
|
|
23
|
+
[[version.files]]
|
|
24
|
+
path = "package.json"
|
|
25
|
+
format = "json"
|
|
26
|
+
key = "version"
|
|
27
|
+
|
|
28
|
+
[[channels]]
|
|
29
|
+
from = "feature/*"
|
|
30
|
+
to = "dev/v1/v1.0"
|
|
31
|
+
operation = "develop"
|
|
32
|
+
|
|
33
|
+
[[channels]]
|
|
34
|
+
from = "dev/v1/v1.0"
|
|
35
|
+
to = "alpha/v1/v1.0"
|
|
36
|
+
operation = "alpha"
|
|
37
|
+
|
|
38
|
+
[[channels]]
|
|
39
|
+
from = "alpha/v1/v1.0"
|
|
40
|
+
to = "release/v1/v1.0"
|
|
41
|
+
operation = "stable"
|
|
42
|
+
|
|
43
|
+
[review]
|
|
44
|
+
minimum_approvals = 1
|
|
45
|
+
code_owners = true
|
|
46
|
+
merge_queue = true
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Buildchain recovery
|
|
2
|
+
on:
|
|
3
|
+
workflow_dispatch:
|
|
4
|
+
inputs:
|
|
5
|
+
attempt:
|
|
6
|
+
description: Exact Buildchain attempt to recover
|
|
7
|
+
required: true
|
|
8
|
+
type: string
|
|
9
|
+
runtime-ref:
|
|
10
|
+
description: Optional repaired runtime
|
|
11
|
+
required: false
|
|
12
|
+
type: string
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
jobs:
|
|
16
|
+
buildchain:
|
|
17
|
+
uses: kungfu-systems/buildchain/.github/workflows/public-ops-recover.yml@v4
|
|
18
|
+
with:
|
|
19
|
+
attempt: ${{ inputs.attempt }}
|
|
20
|
+
runtime-ref: ${{ inputs.runtime-ref }}
|
|
21
|
+
secrets: inherit
|
|
22
|
+
permissions:
|
|
23
|
+
actions: write
|
|
24
|
+
attestations: write
|
|
25
|
+
checks: write
|
|
26
|
+
contents: write
|
|
27
|
+
discussions: write
|
|
28
|
+
id-token: write
|
|
29
|
+
pull-requests: write
|
|
30
|
+
statuses: write
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: Buildchain pipeline
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
types: [opened, reopened, synchronize, ready_for_review, converted_to_draft, closed, labeled, unlabeled, edited, enqueued, dequeued]
|
|
5
|
+
pull_request_review:
|
|
6
|
+
types: [submitted, dismissed]
|
|
7
|
+
pull_request_target:
|
|
8
|
+
types: [closed]
|
|
9
|
+
merge_group:
|
|
10
|
+
types: [checks_requested]
|
|
11
|
+
push:
|
|
12
|
+
repository_dispatch:
|
|
13
|
+
types: [buildchain-attempt-wake]
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
jobs:
|
|
17
|
+
buildchain:
|
|
18
|
+
uses: kungfu-systems/buildchain/.github/workflows/public-ops-pipeline.yml@v4
|
|
19
|
+
secrets: inherit
|
|
20
|
+
permissions:
|
|
21
|
+
actions: write
|
|
22
|
+
attestations: write
|
|
23
|
+
checks: write
|
|
24
|
+
contents: write
|
|
25
|
+
discussions: write
|
|
26
|
+
id-token: write
|
|
27
|
+
pull-requests: write
|
|
28
|
+
statuses: write
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
fs.mkdirSync("dist", { recursive: true });
|
|
3
|
+
fs.mkdirSync("dist/package", { recursive: true });
|
|
4
|
+
fs.writeFileSync("dist/package/index.js", 'export const hello = "hello";\n');
|
|
5
|
+
fs.writeFileSync("dist/package/package.json", JSON.stringify({ name: "@example/minimal", version: JSON.parse(fs.readFileSync("package.json")).version, type: "module", exports: "./index.js" }));
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
schema = 2
|
|
2
|
+
|
|
3
|
+
[[products]]
|
|
4
|
+
id = "main"
|
|
5
|
+
type = "paper"
|
|
6
|
+
platforms = ["linux-x64"]
|
|
7
|
+
build = ["node src/build.mjs"]
|
|
8
|
+
verify = ["node src/verify.mjs"]
|
|
9
|
+
|
|
10
|
+
[[products.artifacts]]
|
|
11
|
+
id = "main"
|
|
12
|
+
path = "dist/paper.pdf"
|
|
13
|
+
kind = "pdf"
|
|
14
|
+
|
|
15
|
+
[[products.targets]]
|
|
16
|
+
provider = "github-release"
|
|
17
|
+
artifacts = ["main"]
|
|
18
|
+
|
|
19
|
+
[version]
|
|
20
|
+
strategy = "semver"
|
|
21
|
+
|
|
22
|
+
[[version.files]]
|
|
23
|
+
path = "package.json"
|
|
24
|
+
format = "json"
|
|
25
|
+
key = "version"
|
|
26
|
+
|
|
27
|
+
[[channels]]
|
|
28
|
+
from = "feature/*"
|
|
29
|
+
to = "dev/v1/v1.0"
|
|
30
|
+
operation = "develop"
|
|
31
|
+
|
|
32
|
+
[[channels]]
|
|
33
|
+
from = "dev/v1/v1.0"
|
|
34
|
+
to = "alpha/v1/v1.0"
|
|
35
|
+
operation = "alpha"
|
|
36
|
+
|
|
37
|
+
[[channels]]
|
|
38
|
+
from = "alpha/v1/v1.0"
|
|
39
|
+
to = "release/v1/v1.0"
|
|
40
|
+
operation = "stable"
|
|
41
|
+
|
|
42
|
+
[review]
|
|
43
|
+
minimum_approvals = 1
|
|
44
|
+
code_owners = true
|
|
45
|
+
merge_queue = true
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Buildchain recovery
|
|
2
|
+
on:
|
|
3
|
+
workflow_dispatch:
|
|
4
|
+
inputs:
|
|
5
|
+
attempt:
|
|
6
|
+
description: Exact Buildchain attempt to recover
|
|
7
|
+
required: true
|
|
8
|
+
type: string
|
|
9
|
+
runtime-ref:
|
|
10
|
+
description: Optional repaired runtime
|
|
11
|
+
required: false
|
|
12
|
+
type: string
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
jobs:
|
|
16
|
+
buildchain:
|
|
17
|
+
uses: kungfu-systems/buildchain/.github/workflows/public-ops-recover.yml@v4
|
|
18
|
+
with:
|
|
19
|
+
attempt: ${{ inputs.attempt }}
|
|
20
|
+
runtime-ref: ${{ inputs.runtime-ref }}
|
|
21
|
+
secrets: inherit
|
|
22
|
+
permissions:
|
|
23
|
+
actions: write
|
|
24
|
+
attestations: write
|
|
25
|
+
checks: write
|
|
26
|
+
contents: write
|
|
27
|
+
discussions: write
|
|
28
|
+
id-token: write
|
|
29
|
+
pull-requests: write
|
|
30
|
+
statuses: write
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: Buildchain pipeline
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
types: [opened, reopened, synchronize, ready_for_review, converted_to_draft, closed, labeled, unlabeled, edited, enqueued, dequeued]
|
|
5
|
+
pull_request_review:
|
|
6
|
+
types: [submitted, dismissed]
|
|
7
|
+
pull_request_target:
|
|
8
|
+
types: [closed]
|
|
9
|
+
merge_group:
|
|
10
|
+
types: [checks_requested]
|
|
11
|
+
push:
|
|
12
|
+
repository_dispatch:
|
|
13
|
+
types: [buildchain-attempt-wake]
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
jobs:
|
|
17
|
+
buildchain:
|
|
18
|
+
uses: kungfu-systems/buildchain/.github/workflows/public-ops-pipeline.yml@v4
|
|
19
|
+
secrets: inherit
|
|
20
|
+
permissions:
|
|
21
|
+
actions: write
|
|
22
|
+
attestations: write
|
|
23
|
+
checks: write
|
|
24
|
+
contents: write
|
|
25
|
+
discussions: write
|
|
26
|
+
id-token: write
|
|
27
|
+
pull-requests: write
|
|
28
|
+
statuses: write
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
fs.mkdirSync("dist", { recursive: true });
|
|
3
|
+
const stream = "BT /F1 24 Tf 50 700 Td (Minimal Paper) Tj ET";
|
|
4
|
+
const objects = ["<< /Type /Catalog /Pages 2 0 R >>", "<< /Type /Pages /Kids [3 0 R] /Count 1 >>", "<< /Type /Page /Parent 2 0 R /MediaBox [0 0 612 792] /Resources << /Font << /F1 4 0 R >> >> /Contents 5 0 R >>", "<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>", `<< /Length ${stream.length} >>\nstream\n${stream}\nendstream`];
|
|
5
|
+
let pdf = "%PDF-1.4\n";
|
|
6
|
+
const offsets = [0];
|
|
7
|
+
for (const [index, object] of objects.entries()) { offsets.push(Buffer.byteLength(pdf)); pdf += `${index + 1} 0 obj\n${object}\nendobj\n`; }
|
|
8
|
+
const xref = Buffer.byteLength(pdf);
|
|
9
|
+
pdf += `xref\n0 ${offsets.length}\n0000000000 65535 f \n`;
|
|
10
|
+
for (const offset of offsets.slice(1)) pdf += `${String(offset).padStart(10, "0")} 00000 n \n`;
|
|
11
|
+
pdf += `trailer\n<< /Size ${offsets.length} /Root 1 0 R >>\nstartxref\n${xref}\n%%EOF\n`;
|
|
12
|
+
fs.writeFileSync("dist/paper.pdf", pdf);
|