@pulse-compute/provider-fastly 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.
Files changed (63) hide show
  1. package/README.md +52 -1
  2. package/dist/config-schema.json +73 -0
  3. package/dist/index.d.ts +61 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +59 -0
  6. package/dist/index.js.map +1 -0
  7. package/package.json +87 -5
  8. package/src/build/canonical-target.js +436 -0
  9. package/src/build/entities-native.js +564 -0
  10. package/src/build/fixed-memory-runtime.as.ts +148 -0
  11. package/src/build/native-http-effects.js +871 -0
  12. package/src/build/native-http-shell.js +703 -0
  13. package/src/build/native-platform-capabilities.js +2109 -0
  14. package/src/compiler/assets-package-out-parity-proof.js +338 -0
  15. package/src/compiler/assets-provider-proof.js +499 -0
  16. package/src/compiler/config-provider-resolution.js +573 -0
  17. package/src/compiler/fastly-adapter.js +564 -0
  18. package/src/compiler/fastly-command-entry.js +390 -0
  19. package/src/compiler/fastly-config-secret-serve.js +323 -0
  20. package/src/compiler/fastly-hostcall-binding.js +598 -0
  21. package/src/compiler/fastly-readiness.js +477 -0
  22. package/src/compiler/index.js +40 -0
  23. package/src/compiler/lifecycle-parity-contract.js +70 -0
  24. package/src/compiler/lifecycle-parity-proof.js +260 -0
  25. package/src/compiler/route-handler-effect-proof.js +255 -0
  26. package/src/compiler/runtime-provider-kv.js +237 -0
  27. package/src/compiler/runtime-provider-shape.js +109 -0
  28. package/src/config-api.js +63 -0
  29. package/src/config-schema.d.ts +13 -0
  30. package/src/config-schema.js +27 -0
  31. package/src/config-schema.json +73 -0
  32. package/src/index.js +3 -0
  33. package/src/index.ts +118 -0
  34. package/src/javascript/assets-adapter.js +122 -0
  35. package/src/javascript/bindings-adapter.js +237 -0
  36. package/src/javascript/errors.js +26 -0
  37. package/src/javascript/fetch-adapter.js +93 -0
  38. package/src/javascript/grip-broadcast.js +261 -0
  39. package/src/javascript/jwt-verifier.js +137 -0
  40. package/src/javascript/lifecycle.js +55 -0
  41. package/src/javascript/local-loader.js +138 -0
  42. package/src/javascript/logging.js +26 -0
  43. package/src/javascript/package-effects.js +68 -0
  44. package/src/javascript/runtime-host.js +108 -0
  45. package/src/javascript/sha256.js +128 -0
  46. package/src/javascript/source-package.js +776 -0
  47. package/src/javascript/support.js +142 -0
  48. package/src/javascript/target-support-policy.js +260 -0
  49. package/src/javascript/target.js +73 -0
  50. package/src/javascript/test-runtime.js +407 -0
  51. package/src/provider-contract.js +72 -0
  52. package/src/runtime/assets-provider.js +464 -0
  53. package/src/runtime/canonical-api-runtime.js +597 -0
  54. package/src/runtime/index.js +28 -0
  55. package/src/runtime/provider-primitives-contract.js +272 -0
  56. package/src/runtime/provider-primitives.js +82 -0
  57. package/src/runtime/route-handler-effects.js +507 -0
  58. package/src/testing/fastly-cli.js +538 -0
  59. package/src/testing/native-http-effects-host.js +390 -0
  60. package/src/testing/native-http-shell-host.js +190 -0
  61. package/src/testing/native-platform-capabilities-host.js +599 -0
  62. package/src/toolchain/config.js +128 -0
  63. package/src/toolchain/index.js +343 -0
package/README.md CHANGED
@@ -1,3 +1,54 @@
1
1
  # @pulse-compute/provider-fastly
2
2
 
3
- This is an inert namespace-bootstrap package. It contains no executable code.
3
+ <!-- pulse-package-status:start -->
4
+ > **Support tier:** Supported provider/extension surface<br>
5
+ > **Audience:** Applications targeting Fastly Compute and Pulse provider maintainers.<br>
6
+ > **Install directly:** Yes, for Fastly projects. Node-only projects do not need to import it directly.<br>
7
+ > **Supported entry points:** `@pulse-compute/provider-fastly`, `@pulse-compute/provider-fastly/contract`, `@pulse-compute/provider-fastly/toolchain`, `@pulse-compute/provider-fastly/config-schema`, `@pulse-compute/provider-fastly/runtime/canonical-api-runtime`, `@pulse-compute/provider-fastly/build/canonical-target`, `@pulse-compute/provider-fastly/testing/fastly-cli`<br>
8
+ > **Stability:** The listed entry points are supported for the Beta; all other exported subpaths are implementation-only.<br>
9
+ > **Canonical documentation:** [Package guide](https://pulsecompute.io/v1.0.0-beta.1/packages/provider-fastly/)
10
+ >
11
+ > This release-status block is generated from the synchronized `Pulse 1.0.0-beta.1` package policy.
12
+ <!-- pulse-package-status:end -->
13
+
14
+ Fastly provider configuration, canonical capability lowering, local conformance execution, Compute target generation, and explicit external-tool boundaries.
15
+
16
+ <!-- pulse-doc-source: examples/05-fastly-capabilities/.pulse/config.ts -->
17
+ ```ts
18
+ import { defineConfig } from '@pulse-compute/pulse'
19
+ export default defineConfig((scope) => ({
20
+ pulse: { entry: 'src/index.ts', tests: 'tests/pulse.harness.ts', defaultProfile: 'local', strict: true },
21
+ local: {
22
+ host: 'fastly', target: 'native', outDir: 'dist', apiBase: scope.config('API_BASE'), apiToken: scope.secret('API_TOKEN'),
23
+ dev: { config: { API_BASE: 'https://api.example.com' }, secrets: { API_TOKEN: 'local-example-secret' }, fetches: { 'https://api.example.com/users/7': { value: { id: 7, name: 'Ada' } } } },
24
+ fastly: { bindings: { configStore: 'app_config', secretStore: 'app_secrets', backends: { 'https://api.example.com': 'api_backend' }, dynamicBackends: false }, build: { name: 'pulse-config-secret-example' } },
25
+ },
26
+ }))
27
+ ```
28
+ <!-- /pulse-doc-source -->
29
+
30
+ Bindings map canonical logical resources to Fastly deployment resources. Handler source remains provider-neutral and does not receive Fastly SDK objects.
31
+
32
+ A normal `pulse build` compiles the provider-neutral plan and emits generated Fastly-targeted AssemblyScript plus compact direct-host-ABI `bin/main.wasm`. Provider selection comes from the active `.pulse/config.ts` profile; public provider overrides and the former source-only JavaScript packaging mode are not supported. Local `test` and `dev` use the provider-owned conformance runtime. External target checks record and use either `fastly compute serve --file` or an explicitly selected direct `viceroy serve` launcher. The package installs neither tool and keeps this test-only orchestration outside application runtime dependencies.
33
+
34
+ ## Supported entries
35
+
36
+ - package root — typed `fastly()` configuration;
37
+ - `contract` — canonical provider descriptor and plan integration;
38
+ - `runtime/canonical-api-runtime` — local canonical execution;
39
+ - `build/canonical-target` — target writer;
40
+ - `testing/fastly-cli` — Fastly CLI discovery and serve boundary.
41
+
42
+ Other exported subpaths are implementation or compatibility surfaces.
43
+
44
+ JWT verification is not currently an eligible Fastly JavaScript capability.
45
+ The provider fails `pulse.jwt` effects with `PULSE_JWT_TARGET_UNSUPPORTED`
46
+ until the pinned Compute runtime proves the required Web Crypto algorithms and
47
+ trusted wall-clock authority. It does not fall back to Node execution.
48
+
49
+ ## Documentation
50
+
51
+ - [Fastly package guide](https://pulsecompute.io/v1.0.0-beta.1/packages/provider-fastly/)
52
+ - [Project configuration](https://pulsecompute.io/v1.0.0-beta.1/reference/project-config/#fastly-provider-options)
53
+ - [Fastly capabilities guide](https://pulsecompute.io/v1.0.0-beta.1/guides/fastly-capabilities/)
54
+ - [Environment variables](https://pulsecompute.io/v1.0.0-beta.1/reference/environment/#pulse-fastly-bin)
@@ -0,0 +1,73 @@
1
+ {
2
+ "schemaVersion": "pulse.provider-fastly-config-schema.v1",
3
+ "fields": {
4
+ "fastly.configStore": {
5
+ "kind": "string",
6
+ "default": "pulse_config"
7
+ },
8
+ "fastly.secretStore": {
9
+ "kind": "string",
10
+ "default": "pulse_secrets"
11
+ },
12
+ "fastly.kv": {
13
+ "kind": "string-map",
14
+ "default": {}
15
+ },
16
+ "fastly.backends": {
17
+ "kind": "string-map",
18
+ "default": {}
19
+ },
20
+ "fastly.dynamicBackends": {
21
+ "kind": "boolean",
22
+ "default": false
23
+ },
24
+ "fastly.grip": {
25
+ "kind": "object"
26
+ },
27
+ "fastly.grip.fanoutBackend": {
28
+ "kind": "optional-string"
29
+ },
30
+ "fastly.grip.publishEndpoint": {
31
+ "kind": "optional-string"
32
+ },
33
+ "fastly.grip.publishUrl": {
34
+ "kind": "optional-string"
35
+ },
36
+ "fastly.grip.publishBackend": {
37
+ "kind": "optional-string"
38
+ },
39
+ "fastly.grip.authentication": {
40
+ "kind": "object"
41
+ },
42
+ "fastly.grip.authentication.scheme": {
43
+ "kind": "optional-string"
44
+ },
45
+ "fastly.grip.authentication.secretRef": {
46
+ "kind": "optional-string"
47
+ },
48
+ "fastly.grip.directHold": {
49
+ "kind": "boolean",
50
+ "default": true
51
+ },
52
+ "fastly.name": {
53
+ "kind": "string",
54
+ "default": "pulse-app"
55
+ },
56
+ "fastly.description": {
57
+ "kind": "string",
58
+ "default": "Pulse application"
59
+ },
60
+ "fastly.authors": {
61
+ "kind": "string-array",
62
+ "default": []
63
+ },
64
+ "fastly.local": {
65
+ "kind": "object",
66
+ "default": {}
67
+ },
68
+ "fastly.local.networkFetch": {
69
+ "kind": "boolean",
70
+ "default": false
71
+ }
72
+ }
73
+ }
@@ -0,0 +1,61 @@
1
+ export declare const FASTLY_PROVIDER_API_VERSION: "pulse.provider-fastly-api.v2";
2
+ export interface PulseFastlyGripOptions {
3
+ readonly fanoutBackend?: string;
4
+ readonly publishEndpoint?: string;
5
+ readonly publishUrl?: string;
6
+ readonly publishBackend?: string;
7
+ readonly authentication?: {
8
+ readonly scheme?: 'bearer';
9
+ readonly secretRef: string;
10
+ };
11
+ readonly directHold?: boolean;
12
+ }
13
+ export interface PulseFastlyLocalOptions {
14
+ readonly networkFetch?: boolean;
15
+ }
16
+ export interface PulseFastlyProviderOptions {
17
+ readonly configStore?: string;
18
+ readonly secretStore?: string;
19
+ readonly kv?: Readonly<Record<string, string>>;
20
+ readonly backends?: Readonly<Record<string, string>>;
21
+ readonly dynamicBackends?: boolean;
22
+ readonly grip?: PulseFastlyGripOptions;
23
+ readonly name?: string;
24
+ readonly description?: string;
25
+ readonly authors?: readonly string[];
26
+ readonly local?: PulseFastlyLocalOptions;
27
+ }
28
+ export interface PulseFastlyProviderConfig {
29
+ readonly kind: 'fastly';
30
+ readonly version: typeof FASTLY_PROVIDER_API_VERSION;
31
+ readonly bindings: {
32
+ readonly configStore: string;
33
+ readonly secretStore: string;
34
+ readonly kv: Readonly<Record<string, string>>;
35
+ readonly backends: Readonly<Record<string, string>>;
36
+ readonly grip?: {
37
+ readonly fanoutBackend?: string;
38
+ readonly publishEndpoint?: string;
39
+ readonly publishUrl?: string;
40
+ readonly publishBackend?: string;
41
+ readonly authentication?: {
42
+ readonly scheme: 'bearer';
43
+ readonly secretRef: string;
44
+ };
45
+ readonly directHold: boolean;
46
+ };
47
+ readonly dynamicBackends: boolean;
48
+ };
49
+ readonly build: {
50
+ readonly name: string;
51
+ readonly description: string;
52
+ readonly authors: readonly string[];
53
+ readonly language: 'other';
54
+ };
55
+ readonly local: {
56
+ readonly networkFetch: boolean;
57
+ };
58
+ readonly providerSpecificUserland: false;
59
+ }
60
+ export declare function fastly(options?: PulseFastlyProviderOptions): PulseFastlyProviderConfig;
61
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FASTLY_PROVIDER_API_VERSION = void 0;
7
+ exports.fastly = fastly;
8
+ const config_schema_json_1 = __importDefault(require("./config-schema.json"));
9
+ const fastlySchemaFields = config_schema_json_1.default.fields;
10
+ const fastlyDefaults = Object.freeze(Object.fromEntries(Object.entries(fastlySchemaFields).filter(([, rule]) => Object.prototype.hasOwnProperty.call(rule, 'default')).map(([key, rule]) => [key, rule.default])));
11
+ exports.FASTLY_PROVIDER_API_VERSION = 'pulse.provider-fastly-api.v2';
12
+ function stringMap(input) {
13
+ return Object.freeze(Object.fromEntries(Object.entries(input ?? {}).map(([key, value]) => [String(key), String(value)])));
14
+ }
15
+ function gripAuthentication(input) {
16
+ if (input === undefined)
17
+ return undefined;
18
+ const scheme = String(input.scheme ?? 'bearer').toLowerCase();
19
+ if (scheme !== 'bearer')
20
+ throw new TypeError('fastly.grip.authentication.scheme must be bearer.');
21
+ return Object.freeze({
22
+ scheme: 'bearer',
23
+ secretRef: String(input.secretRef),
24
+ });
25
+ }
26
+ function gripBindings(input) {
27
+ return Object.freeze({
28
+ fanoutBackend: input?.fanoutBackend === undefined ? undefined : String(input.fanoutBackend),
29
+ publishEndpoint: input?.publishEndpoint === undefined ? undefined : String(input.publishEndpoint),
30
+ publishUrl: input?.publishUrl === undefined ? undefined : String(input.publishUrl),
31
+ publishBackend: input?.publishBackend === undefined ? undefined : String(input.publishBackend),
32
+ authentication: gripAuthentication(input?.authentication),
33
+ directHold: input?.directHold === undefined ? Boolean(fastlyDefaults['fastly.grip.directHold']) : input.directHold !== false
34
+ });
35
+ }
36
+ function fastly(options = {}) {
37
+ const normalizedGrip = options.grip === undefined ? undefined : gripBindings(options.grip);
38
+ return Object.freeze({
39
+ kind: 'fastly',
40
+ version: exports.FASTLY_PROVIDER_API_VERSION,
41
+ bindings: Object.freeze({
42
+ configStore: String(options.configStore ?? fastlyDefaults['fastly.configStore']),
43
+ secretStore: String(options.secretStore ?? fastlyDefaults['fastly.secretStore']),
44
+ kv: stringMap(options.kv),
45
+ backends: stringMap(options.backends),
46
+ ...(normalizedGrip ? { grip: normalizedGrip } : {}),
47
+ dynamicBackends: options.dynamicBackends === undefined ? Boolean(fastlyDefaults['fastly.dynamicBackends']) : options.dynamicBackends === true
48
+ }),
49
+ build: Object.freeze({
50
+ name: String(options.name ?? fastlyDefaults['fastly.name']),
51
+ description: String(options.description ?? fastlyDefaults['fastly.description']),
52
+ authors: Object.freeze((options.authors ?? (Array.isArray(fastlyDefaults['fastly.authors']) ? fastlyDefaults['fastly.authors'] : [])).map(String)),
53
+ language: 'other'
54
+ }),
55
+ local: Object.freeze({ networkFetch: Boolean(options.local?.networkFetch ?? fastlyDefaults['fastly.local.networkFetch']) }),
56
+ providerSpecificUserland: false
57
+ });
58
+ }
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AA+FA,wBAsBC;AArHD,8EAAwD;AAGxD,MAAM,kBAAkB,GAAG,4BAAoB,CAAC,MAAoD,CAAC;AACrG,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAsC,CAAC;AAE3O,QAAA,2BAA2B,GAAG,8BAAuC,CAAC;AAgEnF,SAAS,SAAS,CAAC,KAAmD;IACpE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5H,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA2D;IACrF,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9D,IAAI,MAAM,KAAK,QAAQ;QAAE,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;IAClG,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,QAAiB;QACzB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;KACnC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,KAAyC;IAC7D,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,aAAa,EAAE,KAAK,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;QAC3F,eAAe,EAAE,KAAK,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;QACjG,UAAU,EAAE,KAAK,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;QAClF,cAAc,EAAE,KAAK,EAAE,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;QAC9F,cAAc,EAAE,kBAAkB,CAAC,KAAK,EAAE,cAAc,CAAC;QACzD,UAAU,EAAE,KAAK,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,KAAK;KAC7H,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,MAAM,CAAC,UAAsC,EAAE;IAC7D,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3F,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,mCAA2B;QACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,cAAc,CAAC,oBAAoB,CAAC,CAAC;YAChF,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,cAAc,CAAC,oBAAoB,CAAC,CAAC;YAChF,EAAE,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;YACrC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,eAAe,EAAE,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,KAAK,IAAI;SAC9I,CAAC;QACF,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;YAC3D,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,cAAc,CAAC,oBAAoB,CAAC,CAAC;YAChF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClJ,QAAQ,EAAE,OAAO;SAClB,CAAC;QACF,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,IAAI,cAAc,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC;QAC3H,wBAAwB,EAAE,KAAK;KAChC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,15 +1,97 @@
1
1
  {
2
2
  "name": "@pulse-compute/provider-fastly",
3
- "version": "0.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": "Fastly provider configuration, contract-driven lowering, local conformance runtime, and PulseWasm target builders.",
9
+ "type": "commonjs",
10
+ "main": "./src/index.js",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js",
15
+ "require": "./src/index.js",
16
+ "default": "./src/index.js"
17
+ },
18
+ "./compiler": "./src/compiler/index.js",
19
+ "./compiler/fastly-readiness": "./src/compiler/fastly-readiness.js",
20
+ "./compiler/fastly-hostcall-binding": "./src/compiler/fastly-hostcall-binding.js",
21
+ "./compiler/fastly-adapter": "./src/compiler/fastly-adapter.js",
22
+ "./compiler/fastly-command-entry": "./src/compiler/fastly-command-entry.js",
23
+ "./compiler/fastly-config-secret-serve": "./src/compiler/fastly-config-secret-serve.js",
24
+ "./compiler/config-provider-resolution": "./src/compiler/config-provider-resolution.js",
25
+ "./compiler/runtime-provider-kv": "./src/compiler/runtime-provider-kv.js",
26
+ "./compiler/assets-provider-proof": "./src/compiler/assets-provider-proof.js",
27
+ "./runtime": "./src/runtime/index.js",
28
+ "./runtime/assets-provider": "./src/runtime/assets-provider.js",
29
+ "./compiler/route-handler-effect-proof": "./src/compiler/route-handler-effect-proof.js",
30
+ "./runtime/route-handler-effects": "./src/runtime/route-handler-effects.js",
31
+ "./compiler/lifecycle-parity-proof": "./src/compiler/lifecycle-parity-proof.js",
32
+ "./compiler/assets-package-out-parity-proof": "./src/compiler/assets-package-out-parity-proof.js",
33
+ "./runtime/provider-primitives": "./src/runtime/provider-primitives.js",
34
+ "./config": {
35
+ "types": "./dist/index.d.ts",
36
+ "import": "./dist/index.js",
37
+ "require": "./src/config-api.js",
38
+ "default": "./src/config-api.js"
39
+ },
40
+ "./contract": "./src/provider-contract.js",
41
+ "./build/canonical-target": "./src/build/canonical-target.js",
42
+ "./javascript/target": "./src/javascript/target.js",
43
+ "./javascript/support": "./src/javascript/support.js",
44
+ "./javascript/target-support-policy": "./src/javascript/target-support-policy.js",
45
+ "./javascript/runtime-host": "./src/javascript/runtime-host.js",
46
+ "./javascript/jwt-verifier": "./src/javascript/jwt-verifier.js",
47
+ "./javascript/lifecycle": "./src/javascript/lifecycle.js",
48
+ "./javascript/test-runtime": "./src/javascript/test-runtime.js",
49
+ "./javascript/local-loader": "./src/javascript/local-loader.js",
50
+ "./javascript/source-package": "./src/javascript/source-package.js",
51
+ "./runtime/canonical-api-runtime": "./src/runtime/canonical-api-runtime.js",
52
+ "./testing/fastly-cli": "./src/testing/fastly-cli.js",
53
+ "./toolchain": "./src/toolchain/index.js",
54
+ "./toolchain/config": "./src/toolchain/config.js",
55
+ "./config-schema": {
56
+ "types": "./src/config-schema.d.ts",
57
+ "require": "./src/config-schema.js",
58
+ "default": "./src/config-schema.js"
59
+ }
60
+ },
61
+ "dependencies": {
62
+ "@pulse-compute/crypto": "1.0.0-beta.1",
63
+ "@pulse-compute/jwt": "1.0.0-beta.1",
64
+ "@pulse-compute/runtime": "1.0.0-beta.1",
65
+ "@pulse-compute/wasm-build-support": "1.0.0-beta.1",
66
+ "@pulse-compute/wasm-contracts": "1.0.0-beta.1",
67
+ "@pulse-compute/wasm-guest-link": "1.0.0-beta.1",
68
+ "@pulse-compute/wasm-host-runtime": "1.0.0-beta.1",
69
+ "@pulse-compute/wasm-runtime-core-as": "1.0.0-beta.1",
70
+ "esbuild": "0.28.1"
71
+ },
72
+ "types": "./dist/index.d.ts",
73
+ "sideEffects": false,
6
74
  "files": [
75
+ "dist",
76
+ "src",
7
77
  "README.md",
8
78
  "LICENSE",
9
79
  "NOTICE"
10
80
  ],
11
81
  "publishConfig": {
12
- "access": "public",
13
- "tag": "bootstrap"
82
+ "access": "public"
83
+ },
84
+ "repository": {
85
+ "type": "git",
86
+ "url": "git+https://github.com/pulse-compute/pulse.git",
87
+ "directory": "packages/provider-fastly"
88
+ },
89
+ "homepage": "https://pulsecompute.io/v1.0.0-beta.1/packages/provider-fastly/",
90
+ "bugs": {
91
+ "url": "https://github.com/pulse-compute/pulse/issues"
92
+ },
93
+ "scripts": {
94
+ "build": "tsc -b",
95
+ "test": "node ../../wasm/test/provider/assert-fastly-package.cjs"
14
96
  }
15
- }
97
+ }