@amalgm/browser 0.1.1 → 0.1.2-preview.34176754339
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/PURPOSE.md +20 -0
- package/README.md +27 -0
- package/dist/src/electron.cjs +20 -1
- package/package.json +48 -5
package/PURPOSE.md
CHANGED
|
@@ -50,6 +50,26 @@ public Browser ports. It does not own a second browser implementation.
|
|
|
50
50
|
|
|
51
51
|
## Axioms
|
|
52
52
|
|
|
53
|
+
Consumer assembly derives exact same-branch dependency pins from the declared
|
|
54
|
+
package manifests and registry candidate records. One pending composition per
|
|
55
|
+
branch preserves human edits; complete consumer checks for the exact merge tree govern its
|
|
56
|
+
merge, and publication never implies installed adoption.
|
|
57
|
+
|
|
58
|
+
Managed package delivery starts from a clean, exact main or preview source
|
|
59
|
+
commit. The workflow occurrence supplies only its generated version and source
|
|
60
|
+
record; tests run against those candidate inputs before packing. Every native
|
|
61
|
+
gate and publication use that same tarball and integrity. A candidate tag makes
|
|
62
|
+
bytes available to release assembly; it never promotes an installed runtime.
|
|
63
|
+
Release tooling remains available inside each owner repository so a developer
|
|
64
|
+
or CI job never needs access to another private product repository.
|
|
65
|
+
Registry credentials are available only to the final protected publication job,
|
|
66
|
+
after every native examination proves the exact candidate bytes.
|
|
67
|
+
Native consumers install the archive as a dependency, so SDK development
|
|
68
|
+
dependencies never become an end-user installation requirement.
|
|
69
|
+
The repository token creates only its own dependency proposals and explicitly
|
|
70
|
+
dispatches checks and delivery; every admitted gate proves the actual checkout,
|
|
71
|
+
including the exact two-parent merge commit that becomes managed source.
|
|
72
|
+
|
|
53
73
|
Managed releases bind to one exact published Core version and build from the
|
|
54
74
|
locked dependency graph on the supported Node toolchain.
|
|
55
75
|
|
package/README.md
CHANGED
|
@@ -118,3 +118,30 @@ adapter contracts, migration fixtures, package installation, and tarball
|
|
|
118
118
|
hygiene. The opt-in suites use real bundled Chromium and real Electron.
|
|
119
119
|
|
|
120
120
|
The complete documentation index is [docs/README.md](./docs/README.md).
|
|
121
|
+
|
|
122
|
+
## Managed package delivery
|
|
123
|
+
|
|
124
|
+
Managed npm delivery uses `.github/workflows/publish-package.yml` after the
|
|
125
|
+
exact main/preview owner checks pass. The occurrence generates a unique
|
|
126
|
+
prerelease version and records its source SHA; it reruns the owner suite, packs
|
|
127
|
+
once, and installs that tarball on Linux, macOS and Windows before publication.
|
|
128
|
+
The `candidate-main`/`candidate-preview` tags are release-assembly inputs and
|
|
129
|
+
never select installed runtimes. `package.json` declares this owner's gates,
|
|
130
|
+
CLI probes, peer-only exports and lifecycle permissions. The standalone runner
|
|
131
|
+
under `scripts/release/` is intentionally copied across owners to preserve
|
|
132
|
+
private repository access boundaries. The final publish step uses the `NPM_TOKEN`
|
|
133
|
+
secret in the `npm-release` environment. Where npm trusted publishing is
|
|
134
|
+
configured for this repository's `publish-package.yml` and that environment,
|
|
135
|
+
the token can be omitted. Authentication does not replace native certification,
|
|
136
|
+
exact source records or artifact integrity; private source repositories do not
|
|
137
|
+
receive npm's public-source provenance.
|
|
138
|
+
|
|
139
|
+
Managed dependency reconciliation reads this owner’s declared manifests and
|
|
140
|
+
updates exact same-branch registry candidates in one pending composition PR per
|
|
141
|
+
branch. The repository token explicitly dispatches the owner checks. Every declared gate must
|
|
142
|
+
pass for the exact merge tree; an atomic expected-base update prevents merging
|
|
143
|
+
with untested concurrent source. Human additions or amendments are preserved.
|
|
144
|
+
The half-hour CI reconciliation recovers missed dispatch hints. Assembly runs
|
|
145
|
+
no dependency code or lifecycle hooks, and repeated owner checks do not publish
|
|
146
|
+
another candidate for unchanged source. Repository policy must allow GitHub Actions to create pull requests; no
|
|
147
|
+
cross-repository credential or paid auto-merge feature is required.
|
package/dist/src/electron.cjs
CHANGED
|
@@ -6,7 +6,11 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
8
|
var __commonJS = (cb, mod) => function __require() {
|
|
9
|
-
|
|
9
|
+
try {
|
|
10
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
11
|
+
} catch (e) {
|
|
12
|
+
throw mod = 0, e;
|
|
13
|
+
}
|
|
10
14
|
};
|
|
11
15
|
var __export = (target, all) => {
|
|
12
16
|
for (var name in all)
|
|
@@ -847,6 +851,8 @@ var BrowserError = class extends Error {
|
|
|
847
851
|
this.code = code;
|
|
848
852
|
this.details = details;
|
|
849
853
|
}
|
|
854
|
+
code;
|
|
855
|
+
details;
|
|
850
856
|
name = "BrowserError";
|
|
851
857
|
};
|
|
852
858
|
|
|
@@ -867,6 +873,7 @@ var ElectronBrowserDriver = class {
|
|
|
867
873
|
this.host = host;
|
|
868
874
|
this.capabilities = [...host.capabilities];
|
|
869
875
|
}
|
|
876
|
+
host;
|
|
870
877
|
kind = "electron";
|
|
871
878
|
capabilities;
|
|
872
879
|
identities = /* @__PURE__ */ new Map();
|
|
@@ -973,6 +980,7 @@ var ElectronCookieAdapter = class {
|
|
|
973
980
|
constructor(cookies) {
|
|
974
981
|
this.cookies = cookies;
|
|
975
982
|
}
|
|
983
|
+
cookies;
|
|
976
984
|
id = ELECTRON_COOKIE_ADAPTER_ID;
|
|
977
985
|
supportsPartitionedCookies = false;
|
|
978
986
|
async read() {
|
|
@@ -11917,6 +11925,7 @@ var AdBlockAllowlist = class {
|
|
|
11917
11925
|
this.file = file;
|
|
11918
11926
|
this.paused = read(file);
|
|
11919
11927
|
}
|
|
11928
|
+
file;
|
|
11920
11929
|
paused;
|
|
11921
11930
|
write = Promise.resolve();
|
|
11922
11931
|
enabled(hostname) {
|
|
@@ -11967,6 +11976,7 @@ var NativeAdBlocker = class {
|
|
|
11967
11976
|
this.loading = !this.disabled;
|
|
11968
11977
|
this.allowlist = new AdBlockAllowlist(options.settingsPath);
|
|
11969
11978
|
}
|
|
11979
|
+
options;
|
|
11970
11980
|
engine = null;
|
|
11971
11981
|
loading;
|
|
11972
11982
|
installed;
|
|
@@ -12605,6 +12615,8 @@ var BrowserAdBlockIpc = class {
|
|
|
12605
12615
|
import_electron6.ipcMain.handle(BROWSER_IPC.adBlockGetStatus, this.getStatus);
|
|
12606
12616
|
import_electron6.ipcMain.handle(BROWSER_IPC.adBlockSetEnabled, this.setEnabled);
|
|
12607
12617
|
}
|
|
12618
|
+
blocker;
|
|
12619
|
+
sites;
|
|
12608
12620
|
dispose() {
|
|
12609
12621
|
import_electron6.ipcMain.removeHandler(BROWSER_IPC.adBlockGetStatus);
|
|
12610
12622
|
import_electron6.ipcMain.removeHandler(BROWSER_IPC.adBlockSetEnabled);
|
|
@@ -12684,6 +12696,7 @@ var BrowserContextMenuController = class {
|
|
|
12684
12696
|
this.isDev = isDev;
|
|
12685
12697
|
import_electron7.ipcMain.handle(BROWSER_IPC.contextAction, this.handleAction);
|
|
12686
12698
|
}
|
|
12699
|
+
isDev;
|
|
12687
12700
|
requests = /* @__PURE__ */ new Map();
|
|
12688
12701
|
show(site, params) {
|
|
12689
12702
|
if (site.contents.id !== site.rootGuestId) {
|
|
@@ -12817,6 +12830,8 @@ var BrowserDownloadController = class {
|
|
|
12817
12830
|
browserSession2.on("will-download", this.started);
|
|
12818
12831
|
import_electron8.ipcMain.handle(BROWSER_IPC.downloadAction, this.handleAction);
|
|
12819
12832
|
}
|
|
12833
|
+
browserSession;
|
|
12834
|
+
sites;
|
|
12820
12835
|
downloads = /* @__PURE__ */ new Map();
|
|
12821
12836
|
dispose() {
|
|
12822
12837
|
this.downloads.clear();
|
|
@@ -12916,6 +12931,9 @@ var BrowserPermissionController = class {
|
|
|
12916
12931
|
browserSession2.setPermissionRequestHandler(this.request);
|
|
12917
12932
|
import_electron9.ipcMain.on(BROWSER_IPC.permissionResponse, this.respond);
|
|
12918
12933
|
}
|
|
12934
|
+
browserSession;
|
|
12935
|
+
sites;
|
|
12936
|
+
isTrustedAppUrl;
|
|
12919
12937
|
pending = /* @__PURE__ */ new Map();
|
|
12920
12938
|
decisions = /* @__PURE__ */ new Map();
|
|
12921
12939
|
dispose() {
|
|
@@ -13011,6 +13029,7 @@ var BrowserSiteManager = class {
|
|
|
13011
13029
|
constructor(options) {
|
|
13012
13030
|
this.options = options;
|
|
13013
13031
|
}
|
|
13032
|
+
options;
|
|
13014
13033
|
sites = /* @__PURE__ */ new Map();
|
|
13015
13034
|
automationEmbedders = /* @__PURE__ */ new Map();
|
|
13016
13035
|
get(webContentsId) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amalgm/browser",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2-preview.34176754339",
|
|
4
4
|
"description": "Safe persistent browser automation across headless Chromium and visible Electron surfaces.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -88,13 +88,19 @@
|
|
|
88
88
|
"test:electron": "tsx scripts/run-electron-test.ts",
|
|
89
89
|
"verify": "npm run check && npm run build && npm test && npm run verify:pack",
|
|
90
90
|
"verify:pack": "tsx scripts/verify-package.ts",
|
|
91
|
-
"prepack": "npm run build"
|
|
91
|
+
"prepack": "npm run build",
|
|
92
|
+
"release:admit": "node scripts/release/package.mjs admit",
|
|
93
|
+
"release:prepare": "node scripts/release/package.mjs prepare",
|
|
94
|
+
"release:examine": "node scripts/release/package.mjs examine",
|
|
95
|
+
"release:publish": "node scripts/release/package.mjs publish",
|
|
96
|
+
"release:compose": "node scripts/release/compose.mjs",
|
|
97
|
+
"test:release": "node --test scripts/release/*.test.mjs"
|
|
92
98
|
},
|
|
93
99
|
"engines": {
|
|
94
100
|
"node": ">=24"
|
|
95
101
|
},
|
|
96
102
|
"dependencies": {
|
|
97
|
-
"@amalgm/core": "0.4.
|
|
103
|
+
"@amalgm/core": "0.4.8-preview.34168975242",
|
|
98
104
|
"@ghostery/adblocker": "^2.18.1",
|
|
99
105
|
"agent-browser": "0.26.0",
|
|
100
106
|
"better-sqlite3": "^12.10.1",
|
|
@@ -116,9 +122,46 @@
|
|
|
116
122
|
"@types/node": "^20.19.43",
|
|
117
123
|
"@types/ws": "^8.18.1",
|
|
118
124
|
"cross-env": "^7.0.3",
|
|
119
|
-
"electron": "41.7
|
|
120
|
-
"esbuild": "0.
|
|
125
|
+
"electron": "41.10.7",
|
|
126
|
+
"esbuild": "0.28.2",
|
|
121
127
|
"tsx": "^4.23.1",
|
|
122
128
|
"typescript": "^5.9.3"
|
|
129
|
+
},
|
|
130
|
+
"amalgmRelease": {
|
|
131
|
+
"schema": 1,
|
|
132
|
+
"workflow": "ci.yml",
|
|
133
|
+
"jobs": [
|
|
134
|
+
"verify",
|
|
135
|
+
"real-headless",
|
|
136
|
+
"real-electron"
|
|
137
|
+
],
|
|
138
|
+
"verify": "verify",
|
|
139
|
+
"cli": [
|
|
140
|
+
"amalgm-browser"
|
|
141
|
+
],
|
|
142
|
+
"peerExports": [
|
|
143
|
+
"./electron"
|
|
144
|
+
]
|
|
145
|
+
},
|
|
146
|
+
"allowScripts": {
|
|
147
|
+
"agent-browser@0.26.0": true,
|
|
148
|
+
"better-sqlite3@12.11.1": true,
|
|
149
|
+
"ffmpeg-static@5.3.0": true,
|
|
150
|
+
"fsevents@2.3.3": false,
|
|
151
|
+
"esbuild@0.28.2": true,
|
|
152
|
+
"electron@41.10.7": true
|
|
153
|
+
},
|
|
154
|
+
"amalgmComposition": {
|
|
155
|
+
"schema": 1,
|
|
156
|
+
"manifests": [
|
|
157
|
+
"package.json"
|
|
158
|
+
]
|
|
159
|
+
},
|
|
160
|
+
"gitHead": "f5b42292f912fcdf55bdf121fd553ffb1657b9db",
|
|
161
|
+
"amalgmSource": {
|
|
162
|
+
"repository": "amalgm-inc/amalgm-browser",
|
|
163
|
+
"branch": "preview",
|
|
164
|
+
"commit": "f5b42292f912fcdf55bdf121fd553ffb1657b9db",
|
|
165
|
+
"occurrence": "34176754339"
|
|
123
166
|
}
|
|
124
167
|
}
|