@pulse-compute/assets 0.0.0 → 1.0.0-beta.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/README.md +30 -1
- package/as/README.md +12 -0
- package/as/index.as.ts +54 -0
- package/conformance/native.json +7 -0
- package/dist/asset-bucket.d.ts +85 -0
- package/dist/asset-bucket.d.ts.map +1 -0
- package/dist/asset-bucket.js +226 -0
- package/dist/asset-bucket.js.map +1 -0
- package/dist/asset-context.d.ts +34 -0
- package/dist/asset-context.d.ts.map +1 -0
- package/dist/asset-context.js +29 -0
- package/dist/asset-context.js.map +1 -0
- package/dist/asset-manager.d.ts +54 -0
- package/dist/asset-manager.d.ts.map +1 -0
- package/dist/asset-manager.js +257 -0
- package/dist/asset-manager.js.map +1 -0
- package/dist/errors.d.ts +14 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +25 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/package-runtime.d.ts +9 -0
- package/dist/internal/package-runtime.d.ts.map +1 -0
- package/dist/internal/package-runtime.js +14 -0
- package/dist/internal/package-runtime.js.map +1 -0
- package/dist/portable.d.ts +33 -0
- package/dist/portable.d.ts.map +1 -0
- package/dist/portable.js +98 -0
- package/dist/portable.js.map +1 -0
- package/dist/pulsewasm-compiler-types.d.ts +26 -0
- package/dist/pulsewasm-compiler-types.d.ts.map +1 -0
- package/dist/pulsewasm-compiler-types.js +9 -0
- package/dist/pulsewasm-compiler-types.js.map +1 -0
- package/dist/pulsewasm.d.ts +35 -0
- package/dist/pulsewasm.d.ts.map +1 -0
- package/dist/pulsewasm.js +34 -0
- package/dist/pulsewasm.js.map +1 -0
- package/dist/response-ownership.d.ts +3 -0
- package/dist/response-ownership.d.ts.map +1 -0
- package/dist/response-ownership.js +13 -0
- package/dist/response-ownership.js.map +1 -0
- package/dist/sigv4.d.ts +19 -0
- package/dist/sigv4.d.ts.map +1 -0
- package/dist/sigv4.js +123 -0
- package/dist/sigv4.js.map +1 -0
- package/package.json +59 -5
- package/pulse.package.json +69 -0
- package/pulsewasm.compiler.cjs +1660 -0
- package/pulsewasm.manifest.cjs +60 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PulseWasm lowerable facade for @pulse-compute/assets.
|
|
3
|
+
*
|
|
4
|
+
* This module is the public package-owned lowering facade. PulseWasm compilers may recognize these symbols
|
|
5
|
+
* statically and lower them to the internal `pulse.assets` library contract.
|
|
6
|
+
* They are not a JavaScript asset runtime.
|
|
7
|
+
*/
|
|
8
|
+
export class PulseWasmAssetsLoweringError extends Error {
|
|
9
|
+
constructor(symbol) {
|
|
10
|
+
super(`${symbol} is a PulseWasm lowerable facade and cannot run directly. ` +
|
|
11
|
+
'Select a supported compiler/provider target; no direct JavaScript asset runtime is exported by this package.');
|
|
12
|
+
this.name = 'PulseWasmAssetsLoweringError';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function lowerableOnly(symbol) {
|
|
16
|
+
throw new PulseWasmAssetsLoweringError(symbol);
|
|
17
|
+
}
|
|
18
|
+
export function lookup(store, key, options) {
|
|
19
|
+
void store;
|
|
20
|
+
void key;
|
|
21
|
+
void options;
|
|
22
|
+
return lowerableOnly('assets.lookup');
|
|
23
|
+
}
|
|
24
|
+
export function respond(asset, options) {
|
|
25
|
+
void asset;
|
|
26
|
+
void options;
|
|
27
|
+
return lowerableOnly('assets.respond');
|
|
28
|
+
}
|
|
29
|
+
export const assets = Object.freeze({
|
|
30
|
+
lookup,
|
|
31
|
+
respond,
|
|
32
|
+
});
|
|
33
|
+
export default assets;
|
|
34
|
+
//# sourceMappingURL=pulsewasm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pulsewasm.js","sourceRoot":"","sources":["../src/pulsewasm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuBH,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IACrD,YAAY,MAAc;QACxB,KAAK,CACH,GAAG,MAAM,4DAA4D;YACnE,8GAA8G,CACjH,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AAED,SAAS,aAAa,CAAC,MAA0C;IAC/D,MAAM,IAAI,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,GAAW,EAAE,OAA4B;IAC7E,KAAK,KAAK,CAAC;IACX,KAAK,GAAG,CAAC;IACT,KAAK,OAAO,CAAC;IACb,OAAO,aAAa,CAAC,eAAe,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAkB,EAAE,OAA8B;IACxE,KAAK,KAAK,CAAC;IACX,KAAK,OAAO,CAAC;IACb,OAAO,aAAa,CAAC,gBAAgB,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,MAAM;IACN,OAAO;CACR,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-ownership.d.ts","sourceRoot":"","sources":["../src/response-ownership.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ1E"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Release a provider-owned body that will not be returned to the caller. */
|
|
2
|
+
export async function cancelResponseBody(response) {
|
|
3
|
+
if (!response.body || response.bodyUsed)
|
|
4
|
+
return;
|
|
5
|
+
try {
|
|
6
|
+
await response.body.cancel();
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
// Cancellation is ownership cleanup. A transport that already closed the
|
|
10
|
+
// stream must not replace the routing or HEAD result with a cleanup error.
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=response-ownership.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-ownership.js","sourceRoot":"","sources":["../src/response-ownership.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAkB;IACzD,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ;QAAE,OAAO;IAChD,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;QACzE,2EAA2E;IAC7E,CAAC;AACH,CAAC"}
|
package/dist/sigv4.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type SecretValue = string | Promise<string> | (() => string | Promise<string>);
|
|
2
|
+
export type SigV4Credentials = {
|
|
3
|
+
key: SecretValue;
|
|
4
|
+
secret: SecretValue;
|
|
5
|
+
token?: SecretValue | undefined;
|
|
6
|
+
};
|
|
7
|
+
export type SigV4SignOptions = {
|
|
8
|
+
method: string;
|
|
9
|
+
url: URL | string;
|
|
10
|
+
region?: string | undefined;
|
|
11
|
+
service?: string | undefined;
|
|
12
|
+
credentials: SigV4Credentials;
|
|
13
|
+
headers?: HeadersInit | undefined;
|
|
14
|
+
now?: Date | undefined;
|
|
15
|
+
payloadHash?: string | undefined;
|
|
16
|
+
};
|
|
17
|
+
export declare function signSigV4(options: SigV4SignOptions): Promise<Request>;
|
|
18
|
+
export declare function encodeS3Key(key: string): string;
|
|
19
|
+
//# sourceMappingURL=sigv4.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sigv4.d.ts","sourceRoot":"","sources":["../src/sigv4.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAEtF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,WAAW,EAAE,gBAAgB,CAAC;IAC9B,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAClC,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,CAAC;AAwFF,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuD3E;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C"}
|
package/dist/sigv4.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { AssetBucketSignError } from "./errors.js";
|
|
2
|
+
const encoder = new TextEncoder();
|
|
3
|
+
async function resolveSecret(value) {
|
|
4
|
+
if (value === undefined)
|
|
5
|
+
return undefined;
|
|
6
|
+
const resolved = typeof value === "function" ? value() : value;
|
|
7
|
+
return await resolved;
|
|
8
|
+
}
|
|
9
|
+
function toArrayBuffer(bytes) {
|
|
10
|
+
return new Uint8Array(bytes).slice().buffer;
|
|
11
|
+
}
|
|
12
|
+
function hex(bytes) {
|
|
13
|
+
const view = bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
|
|
14
|
+
return Array.from(view, (b) => b.toString(16).padStart(2, "0")).join("");
|
|
15
|
+
}
|
|
16
|
+
async function sha256Hex(value) {
|
|
17
|
+
const digest = await crypto.subtle.digest("SHA-256", toArrayBuffer(encoder.encode(value)));
|
|
18
|
+
return hex(digest);
|
|
19
|
+
}
|
|
20
|
+
async function hmac(key, value) {
|
|
21
|
+
const cryptoKey = await crypto.subtle.importKey("raw", toArrayBuffer(key), { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
|
|
22
|
+
const signature = await crypto.subtle.sign("HMAC", cryptoKey, toArrayBuffer(encoder.encode(value)));
|
|
23
|
+
return new Uint8Array(signature);
|
|
24
|
+
}
|
|
25
|
+
function formatAmzDate(now) {
|
|
26
|
+
const iso = now.toISOString().replace(/[:-]|\.\d{3}/g, "");
|
|
27
|
+
const amzDate = iso;
|
|
28
|
+
const dateStamp = amzDate.slice(0, 8);
|
|
29
|
+
return { amzDate, dateStamp };
|
|
30
|
+
}
|
|
31
|
+
function encodeRfc3986(value) {
|
|
32
|
+
return encodeURIComponent(value).replace(/[!'()*]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);
|
|
33
|
+
}
|
|
34
|
+
function canonicalQuery(url) {
|
|
35
|
+
const pairs = [];
|
|
36
|
+
url.searchParams.forEach((value, key) => {
|
|
37
|
+
pairs.push([encodeRfc3986(key), encodeRfc3986(value)]);
|
|
38
|
+
});
|
|
39
|
+
pairs.sort(([aKey, aVal], [bKey, bVal]) => {
|
|
40
|
+
if (aKey === bKey)
|
|
41
|
+
return aVal < bVal ? -1 : aVal > bVal ? 1 : 0;
|
|
42
|
+
return aKey < bKey ? -1 : 1;
|
|
43
|
+
});
|
|
44
|
+
return pairs.map(([key, value]) => `${key}=${value}`).join("&");
|
|
45
|
+
}
|
|
46
|
+
function normalizeHeaderValue(value) {
|
|
47
|
+
return value.trim().replace(/\s+/g, " ");
|
|
48
|
+
}
|
|
49
|
+
function collectCanonicalHeaders(headers, host) {
|
|
50
|
+
const collected = new Map();
|
|
51
|
+
headers.forEach((value, key) => {
|
|
52
|
+
const name = key.toLowerCase();
|
|
53
|
+
if (name === "authorization")
|
|
54
|
+
return;
|
|
55
|
+
const values = collected.get(name) ?? [];
|
|
56
|
+
values.push(normalizeHeaderValue(value));
|
|
57
|
+
collected.set(name, values);
|
|
58
|
+
});
|
|
59
|
+
collected.set("host", [host]);
|
|
60
|
+
const names = [...collected.keys()].sort();
|
|
61
|
+
const canonicalHeaders = names
|
|
62
|
+
.map((name) => `${name}:${(collected.get(name) ?? []).join(",")}`)
|
|
63
|
+
.join("\n") + "\n";
|
|
64
|
+
const signedHeaders = names.join(";");
|
|
65
|
+
return { canonicalHeaders, signedHeaders };
|
|
66
|
+
}
|
|
67
|
+
export async function signSigV4(options) {
|
|
68
|
+
try {
|
|
69
|
+
const url = typeof options.url === "string" ? new URL(options.url) : new URL(options.url.toString());
|
|
70
|
+
const region = options.region ?? "us-east-1";
|
|
71
|
+
const service = options.service ?? "s3";
|
|
72
|
+
const method = options.method.toUpperCase();
|
|
73
|
+
const now = options.now ?? new Date();
|
|
74
|
+
const { amzDate, dateStamp } = formatAmzDate(now);
|
|
75
|
+
const accessKey = await resolveSecret(options.credentials.key);
|
|
76
|
+
const secretKey = await resolveSecret(options.credentials.secret);
|
|
77
|
+
const token = await resolveSecret(options.credentials.token);
|
|
78
|
+
if (!accessKey)
|
|
79
|
+
throw new Error("Missing access key");
|
|
80
|
+
if (!secretKey)
|
|
81
|
+
throw new Error("Missing secret key");
|
|
82
|
+
const payloadHash = options.payloadHash ?? "UNSIGNED-PAYLOAD";
|
|
83
|
+
const headers = new Headers(options.headers);
|
|
84
|
+
headers.set("x-amz-date", amzDate);
|
|
85
|
+
headers.set("x-amz-content-sha256", payloadHash);
|
|
86
|
+
if (token)
|
|
87
|
+
headers.set("x-amz-security-token", token);
|
|
88
|
+
const { canonicalHeaders, signedHeaders } = collectCanonicalHeaders(headers, url.host);
|
|
89
|
+
const canonicalRequest = [
|
|
90
|
+
method,
|
|
91
|
+
url.pathname || "/",
|
|
92
|
+
canonicalQuery(url),
|
|
93
|
+
canonicalHeaders,
|
|
94
|
+
signedHeaders,
|
|
95
|
+
payloadHash,
|
|
96
|
+
].join("\n");
|
|
97
|
+
const credentialScope = `${dateStamp}/${region}/${service}/aws4_request`;
|
|
98
|
+
const stringToSign = [
|
|
99
|
+
"AWS4-HMAC-SHA256",
|
|
100
|
+
amzDate,
|
|
101
|
+
credentialScope,
|
|
102
|
+
await sha256Hex(canonicalRequest),
|
|
103
|
+
].join("\n");
|
|
104
|
+
const kSecret = encoder.encode(`AWS4${secretKey}`);
|
|
105
|
+
const kDate = await hmac(kSecret, dateStamp);
|
|
106
|
+
const kRegion = await hmac(kDate, region);
|
|
107
|
+
const kService = await hmac(kRegion, service);
|
|
108
|
+
const kSigning = await hmac(kService, "aws4_request");
|
|
109
|
+
const signature = hex(await hmac(kSigning, stringToSign));
|
|
110
|
+
headers.set("authorization", `AWS4-HMAC-SHA256 Credential=${accessKey}/${credentialScope}, SignedHeaders=${signedHeaders}, Signature=${signature}`);
|
|
111
|
+
return new Request(url, { method, headers });
|
|
112
|
+
}
|
|
113
|
+
catch (cause) {
|
|
114
|
+
throw new AssetBucketSignError("Failed to sign S3-compatible request", { cause });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export function encodeS3Key(key) {
|
|
118
|
+
return key
|
|
119
|
+
.split("/")
|
|
120
|
+
.map((part) => encodeRfc3986(part))
|
|
121
|
+
.join("/");
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=sigv4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sigv4.js","sourceRoot":"","sources":["../src/sigv4.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,69 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pulse-compute/assets",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "Inert namespace bootstrap for Pulse.",
|
|
3
|
+
"version": "1.0.0-beta.1",
|
|
5
4
|
"license": "Apache-2.0",
|
|
5
|
+
"engines": {
|
|
6
|
+
"node": "^22.14.0 || ^24.0.0"
|
|
7
|
+
},
|
|
8
|
+
"description": "Package-owned asset lowering facade and compiler integration for Pulse.",
|
|
9
|
+
"type": "module",
|
|
10
|
+
"sideEffects": false,
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.js",
|
|
15
|
+
"default": "./dist/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./pulsewasm": {
|
|
18
|
+
"types": "./dist/pulsewasm.d.ts",
|
|
19
|
+
"import": "./dist/pulsewasm.js"
|
|
20
|
+
},
|
|
21
|
+
"./pulsewasm/manifest": {
|
|
22
|
+
"require": "./pulsewasm.manifest.cjs",
|
|
23
|
+
"default": "./pulsewasm.manifest.cjs"
|
|
24
|
+
},
|
|
25
|
+
"./pulsewasm/compiler": {
|
|
26
|
+
"require": "./pulsewasm.compiler.cjs",
|
|
27
|
+
"default": "./pulsewasm.compiler.cjs"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
6
30
|
"files": [
|
|
31
|
+
"dist",
|
|
7
32
|
"README.md",
|
|
33
|
+
"pulse.package.json",
|
|
34
|
+
"pulsewasm.manifest.cjs",
|
|
35
|
+
"pulsewasm.compiler.cjs",
|
|
36
|
+
"as",
|
|
37
|
+
"conformance",
|
|
8
38
|
"LICENSE",
|
|
9
39
|
"NOTICE"
|
|
10
40
|
],
|
|
41
|
+
"pulsewasm": {
|
|
42
|
+
"manifest": "./pulsewasm.manifest.cjs"
|
|
43
|
+
},
|
|
11
44
|
"publishConfig": {
|
|
12
|
-
"access": "public"
|
|
13
|
-
|
|
45
|
+
"access": "public"
|
|
46
|
+
},
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "git+https://github.com/pulse-compute/pulse.git",
|
|
50
|
+
"directory": "packages/assets"
|
|
51
|
+
},
|
|
52
|
+
"homepage": "https://pulsecompute.io/v1.0.0-beta.1/packages/assets/",
|
|
53
|
+
"bugs": {
|
|
54
|
+
"url": "https://github.com/pulse-compute/pulse/issues"
|
|
55
|
+
},
|
|
56
|
+
"pulse": {
|
|
57
|
+
"contract": "./pulse.package.json"
|
|
58
|
+
},
|
|
59
|
+
"main": "./dist/index.js",
|
|
60
|
+
"types": "./dist/index.d.ts",
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"@pulse-compute/runtime": "1.0.0-beta.1",
|
|
63
|
+
"@pulse-compute/wasm-contracts": "1.0.0-beta.1"
|
|
64
|
+
},
|
|
65
|
+
"scripts": {
|
|
66
|
+
"build": "tsc -b",
|
|
67
|
+
"test": "corepack pnpm --dir ../.. exec vitest run packages/assets/test"
|
|
14
68
|
}
|
|
15
|
-
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "pulse.package-contract.v1",
|
|
3
|
+
"kind": "pulse.package-contract",
|
|
4
|
+
"contractId": "pulse.assets",
|
|
5
|
+
"npmPackage": "@pulse-compute/assets",
|
|
6
|
+
"description": "Pulse-aware static and host-backed asset response package.",
|
|
7
|
+
"authoring": {
|
|
8
|
+
"namespace": "assets",
|
|
9
|
+
"import": "@pulse-compute/assets",
|
|
10
|
+
"symbols": [
|
|
11
|
+
"lookup",
|
|
12
|
+
"respond"
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
"ownership": {
|
|
16
|
+
"profileFragment": "assets",
|
|
17
|
+
"helperImports": [],
|
|
18
|
+
"reExportImports": []
|
|
19
|
+
},
|
|
20
|
+
"composition": {
|
|
21
|
+
"status": "reserved",
|
|
22
|
+
"helperSymbol": "assets",
|
|
23
|
+
"profileToken": "opaque-direct-use",
|
|
24
|
+
"reasonCode": "PULSE_PACKAGE_COMPOSITION_HELPER_NOT_REALIZED"
|
|
25
|
+
},
|
|
26
|
+
"targets": {
|
|
27
|
+
"native": {
|
|
28
|
+
"status": "supported",
|
|
29
|
+
"realization": "canonical-package-lowering",
|
|
30
|
+
"lowerableSubpath": "@pulse-compute/assets",
|
|
31
|
+
"providerRequirements": [
|
|
32
|
+
"assets",
|
|
33
|
+
"body",
|
|
34
|
+
"clock",
|
|
35
|
+
"headers",
|
|
36
|
+
"result"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"javascript": {
|
|
40
|
+
"status": "supported",
|
|
41
|
+
"realization": "javascript-package-runtime",
|
|
42
|
+
"entry": "./dist/index.js",
|
|
43
|
+
"providerRequirements": [
|
|
44
|
+
"assets"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"lowering": {
|
|
49
|
+
"manifest": "./pulsewasm.manifest.cjs",
|
|
50
|
+
"trust": "first-party",
|
|
51
|
+
"canonicalOperationVersion": "pulse.canonical-package-operation.v1",
|
|
52
|
+
"bundleVersion": "pulse.package-lowering-bundle.v1",
|
|
53
|
+
"providerRequirementVersion": "pulse.provider-requirement-record.v1"
|
|
54
|
+
},
|
|
55
|
+
"conformance": {
|
|
56
|
+
"status": "target-overlap",
|
|
57
|
+
"fixtureRoots": [
|
|
58
|
+
"./conformance"
|
|
59
|
+
],
|
|
60
|
+
"semanticCases": [
|
|
61
|
+
"assets.lookup",
|
|
62
|
+
"assets.respond"
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
"docs": {
|
|
66
|
+
"readme": "./README.md",
|
|
67
|
+
"contract": "./pulse.package.json"
|
|
68
|
+
}
|
|
69
|
+
}
|