@pulse-compute/cli 1.0.0-beta.2 → 1.0.0-beta.3
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/API.md +1 -1
- package/CHANGELOG.md +6 -0
- package/README.md +3 -3
- package/cli-spec.json +1 -1
- package/docs/README.md +1 -1
- package/docs/architecture/current-contracts.md +14 -2
- package/docs/concepts/compilation-and-lowering.md +1 -1
- package/docs/concepts/contracts-and-providers.md +2 -2
- package/docs/concepts/package-owned-lowering.md +1 -1
- package/docs/concepts/targets-and-hosts.md +2 -2
- package/docs/contributing/adding-core-provider.md +1 -1
- package/docs/contributing/adding-first-party-lowerer.md +1 -1
- package/docs/contributing/package-lowerer-contract.md +2 -2
- package/docs/maintainers/documentation-deployment.md +4 -4
- package/docs/maintainers/documentation-versioning.md +1 -1
- package/docs/maintainers/maintenance-policy.json +1 -1
- package/docs/maintainers/maintenance-policy.md +1 -1
- package/docs/maintainers/npm-publishing.md +34 -6
- package/docs/maintainers/plugin-readiness.json +1 -1
- package/docs/maintainers/plugin-readiness.md +1 -1
- package/docs/maintainers/release-acceptance.md +3 -3
- package/docs/maintainers/release-manifest.md +3 -3
- package/docs/maintainers/testing.md +1 -1
- package/docs/packages/README.md +3 -3
- package/docs/packages/assets.md +1 -1
- package/docs/packages/crypto.md +1 -1
- package/docs/packages/entities.md +1 -1
- package/docs/packages/grip.md +1 -1
- package/docs/packages/implementation-packages.md +1 -1
- package/docs/packages/jwt.md +1 -1
- package/docs/packages/provider-fastly.md +1 -1
- package/docs/packages/pulse.md +1 -1
- package/docs/packages/runtime.md +1 -1
- package/docs/packages/s3.md +1 -1
- package/docs/preview-scope.md +1 -1
- package/docs/reference/cli-spec.json +1 -1
- package/docs/reference/cli.md +1 -1
- package/docs/reference/compatibility-matrix.md +1 -1
- package/docs/reference/diagnostics.md +5 -5
- package/docs/reference/documentation-versions.json +11 -3
- package/docs/reference/project-config.md +1 -1
- package/docs/reference/project-config.schema.json +2 -2
- package/docs/reference/release-manifest.json +24 -24
- package/documentation-site.json +1 -1
- package/documentation-versions.json +11 -3
- package/examples/01-hello-json/README.md +1 -1
- package/examples/01-hello-json/package.json +2 -2
- package/examples/02-request-schema/README.md +1 -1
- package/examples/02-request-schema/package.json +2 -2
- package/examples/03-fetch-composition/README.md +1 -1
- package/examples/03-fetch-composition/package.json +2 -2
- package/examples/05-fastly-capabilities/README.md +1 -1
- package/examples/05-fastly-capabilities/package.json +4 -4
- package/examples/07-opaque-proxy/README.md +1 -1
- package/examples/07-opaque-proxy/package.json +3 -3
- package/examples/09-router-lowering/README.md +1 -1
- package/examples/09-router-lowering/package.json +3 -3
- package/examples/10-entities-tools/package.json +3 -3
- package/examples/11-events/README.md +1 -1
- package/examples/11-events/package.json +2 -2
- package/examples/12-mcp-proxy/README.md +1 -1
- package/examples/12-mcp-proxy/package.json +2 -2
- package/examples/13-jwt-es256/README.md +1 -1
- package/examples/13-jwt-es256/package.json +3 -3
- package/package.json +7 -7
- package/project-config.schema.json +2 -2
- package/release-manifest.json +24 -24
- package/src/documentation.js +1 -1
- package/src/project-config-schema.js +1 -1
- package/src/project-execution.js +42 -24
package/release-manifest.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "pulse.release-catalog.v1",
|
|
3
|
-
"releaseVersion": "1.0.0-beta.
|
|
3
|
+
"releaseVersion": "1.0.0-beta.3",
|
|
4
4
|
"channel": "beta",
|
|
5
|
-
"releasedAt": "2026-09-
|
|
5
|
+
"releasedAt": "2026-09-14",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"display": {
|
|
8
8
|
"productName": "Pulse",
|
|
9
9
|
"candidateLabel": "Beta",
|
|
10
|
-
"candidateName": "Pulse 1.0.0-beta.
|
|
10
|
+
"candidateName": "Pulse 1.0.0-beta.3 — Beta",
|
|
11
11
|
"activationStage": "documentation-release"
|
|
12
12
|
},
|
|
13
13
|
"legal": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"documentation": {
|
|
30
30
|
"origin": "https://pulsecompute.io",
|
|
31
31
|
"basePath": "/",
|
|
32
|
-
"version": "v1.0.0-beta.
|
|
32
|
+
"version": "v1.0.0-beta.3",
|
|
33
33
|
"latestAlias": "latest",
|
|
34
34
|
"source": "docs/README.md"
|
|
35
35
|
},
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
},
|
|
98
98
|
"publication": {
|
|
99
99
|
"registry": "https://registry.npmjs.org",
|
|
100
|
-
"distTag": "
|
|
100
|
+
"distTag": "latest",
|
|
101
101
|
"access": "public",
|
|
102
102
|
"authentication": "npm-trusted-publishing-oidc",
|
|
103
103
|
"provenance": "automatic",
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
{
|
|
154
154
|
"dir": "packages/runtime",
|
|
155
155
|
"name": "@pulse-compute/runtime",
|
|
156
|
-
"version": "1.0.0-beta.
|
|
156
|
+
"version": "1.0.0-beta.3",
|
|
157
157
|
"documentation": "docs/packages/runtime.md",
|
|
158
158
|
"role": "public-runtime",
|
|
159
159
|
"tier": "canonical-application",
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
{
|
|
168
168
|
"dir": "packages/pulse",
|
|
169
169
|
"name": "@pulse-compute/pulse",
|
|
170
|
-
"version": "1.0.0-beta.
|
|
170
|
+
"version": "1.0.0-beta.3",
|
|
171
171
|
"documentation": "docs/packages/pulse.md",
|
|
172
172
|
"role": "public-api",
|
|
173
173
|
"tier": "canonical-application",
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
{
|
|
183
183
|
"dir": "wasm/packages/cli",
|
|
184
184
|
"name": "@pulse-compute/cli",
|
|
185
|
-
"version": "1.0.0-beta.
|
|
185
|
+
"version": "1.0.0-beta.3",
|
|
186
186
|
"documentation": "docs/packages/cli.md",
|
|
187
187
|
"role": "public-cli",
|
|
188
188
|
"tier": "canonical-application",
|
|
@@ -207,7 +207,7 @@
|
|
|
207
207
|
{
|
|
208
208
|
"dir": "packages/provider-fastly",
|
|
209
209
|
"name": "@pulse-compute/provider-fastly",
|
|
210
|
-
"version": "1.0.0-beta.
|
|
210
|
+
"version": "1.0.0-beta.3",
|
|
211
211
|
"documentation": "docs/packages/provider-fastly.md",
|
|
212
212
|
"role": "public-provider",
|
|
213
213
|
"tier": "supported-extension",
|
|
@@ -227,7 +227,7 @@
|
|
|
227
227
|
{
|
|
228
228
|
"dir": "packages/grip",
|
|
229
229
|
"name": "@pulse-compute/grip",
|
|
230
|
-
"version": "1.0.0-beta.
|
|
230
|
+
"version": "1.0.0-beta.3",
|
|
231
231
|
"documentation": "docs/packages/grip.md",
|
|
232
232
|
"role": "public-extension",
|
|
233
233
|
"tier": "supported-extension",
|
|
@@ -241,7 +241,7 @@
|
|
|
241
241
|
{
|
|
242
242
|
"dir": "packages/assets",
|
|
243
243
|
"name": "@pulse-compute/assets",
|
|
244
|
-
"version": "1.0.0-beta.
|
|
244
|
+
"version": "1.0.0-beta.3",
|
|
245
245
|
"documentation": "docs/packages/assets.md",
|
|
246
246
|
"role": "public-extension",
|
|
247
247
|
"tier": "supported-extension",
|
|
@@ -255,7 +255,7 @@
|
|
|
255
255
|
{
|
|
256
256
|
"dir": "packages/crypto",
|
|
257
257
|
"name": "@pulse-compute/crypto",
|
|
258
|
-
"version": "1.0.0-beta.
|
|
258
|
+
"version": "1.0.0-beta.3",
|
|
259
259
|
"documentation": "docs/packages/crypto.md",
|
|
260
260
|
"role": "public-extension",
|
|
261
261
|
"tier": "supported-extension",
|
|
@@ -269,7 +269,7 @@
|
|
|
269
269
|
{
|
|
270
270
|
"dir": "packages/jwt",
|
|
271
271
|
"name": "@pulse-compute/jwt",
|
|
272
|
-
"version": "1.0.0-beta.
|
|
272
|
+
"version": "1.0.0-beta.3",
|
|
273
273
|
"documentation": "docs/packages/jwt.md",
|
|
274
274
|
"role": "public-extension",
|
|
275
275
|
"tier": "supported-extension",
|
|
@@ -283,7 +283,7 @@
|
|
|
283
283
|
{
|
|
284
284
|
"dir": "packages/entities",
|
|
285
285
|
"name": "@pulse-compute/entities",
|
|
286
|
-
"version": "1.0.0-beta.
|
|
286
|
+
"version": "1.0.0-beta.3",
|
|
287
287
|
"documentation": "docs/packages/entities.md",
|
|
288
288
|
"role": "public-extension",
|
|
289
289
|
"tier": "supported-extension",
|
|
@@ -297,7 +297,7 @@
|
|
|
297
297
|
{
|
|
298
298
|
"dir": "packages/s3",
|
|
299
299
|
"name": "@pulse-compute/s3",
|
|
300
|
-
"version": "1.0.0-beta.
|
|
300
|
+
"version": "1.0.0-beta.3",
|
|
301
301
|
"documentation": "docs/packages/s3.md",
|
|
302
302
|
"role": "public-extension",
|
|
303
303
|
"tier": "supported-extension",
|
|
@@ -311,7 +311,7 @@
|
|
|
311
311
|
{
|
|
312
312
|
"dir": "wasm/packages/build-support",
|
|
313
313
|
"name": "@pulse-compute/wasm-build-support",
|
|
314
|
-
"version": "1.0.0-beta.
|
|
314
|
+
"version": "1.0.0-beta.3",
|
|
315
315
|
"documentation": "docs/packages/implementation-packages.md",
|
|
316
316
|
"role": "implementation",
|
|
317
317
|
"tier": "implementation",
|
|
@@ -325,7 +325,7 @@
|
|
|
325
325
|
{
|
|
326
326
|
"dir": "wasm/packages/compiler",
|
|
327
327
|
"name": "@pulse-compute/wasm-compiler",
|
|
328
|
-
"version": "1.0.0-beta.
|
|
328
|
+
"version": "1.0.0-beta.3",
|
|
329
329
|
"documentation": "docs/packages/implementation-packages.md",
|
|
330
330
|
"role": "implementation",
|
|
331
331
|
"tier": "implementation",
|
|
@@ -340,7 +340,7 @@
|
|
|
340
340
|
{
|
|
341
341
|
"dir": "wasm/packages/wasm-guest-link",
|
|
342
342
|
"name": "@pulse-compute/wasm-guest-link",
|
|
343
|
-
"version": "1.0.0-beta.
|
|
343
|
+
"version": "1.0.0-beta.3",
|
|
344
344
|
"documentation": "docs/packages/implementation-packages.md",
|
|
345
345
|
"role": "implementation",
|
|
346
346
|
"tier": "implementation",
|
|
@@ -354,7 +354,7 @@
|
|
|
354
354
|
{
|
|
355
355
|
"dir": "wasm/packages/contracts",
|
|
356
356
|
"name": "@pulse-compute/wasm-contracts",
|
|
357
|
-
"version": "1.0.0-beta.
|
|
357
|
+
"version": "1.0.0-beta.3",
|
|
358
358
|
"documentation": "docs/packages/implementation-packages.md",
|
|
359
359
|
"role": "implementation",
|
|
360
360
|
"tier": "implementation",
|
|
@@ -368,7 +368,7 @@
|
|
|
368
368
|
{
|
|
369
369
|
"dir": "wasm/packages/host-runtime",
|
|
370
370
|
"name": "@pulse-compute/wasm-host-runtime",
|
|
371
|
-
"version": "1.0.0-beta.
|
|
371
|
+
"version": "1.0.0-beta.3",
|
|
372
372
|
"documentation": "docs/packages/implementation-packages.md",
|
|
373
373
|
"role": "implementation",
|
|
374
374
|
"tier": "implementation",
|
|
@@ -382,7 +382,7 @@
|
|
|
382
382
|
{
|
|
383
383
|
"dir": "wasm/packages/library-kit",
|
|
384
384
|
"name": "@pulse-compute/wasm-library-kit",
|
|
385
|
-
"version": "1.0.0-beta.
|
|
385
|
+
"version": "1.0.0-beta.3",
|
|
386
386
|
"documentation": "docs/packages/implementation-packages.md",
|
|
387
387
|
"role": "implementation",
|
|
388
388
|
"tier": "implementation",
|
|
@@ -396,7 +396,7 @@
|
|
|
396
396
|
{
|
|
397
397
|
"dir": "packages/provider-node",
|
|
398
398
|
"name": "@pulse-compute/provider-node",
|
|
399
|
-
"version": "1.0.0-beta.
|
|
399
|
+
"version": "1.0.0-beta.3",
|
|
400
400
|
"documentation": "docs/packages/implementation-packages.md",
|
|
401
401
|
"role": "implementation",
|
|
402
402
|
"tier": "implementation",
|
|
@@ -411,7 +411,7 @@
|
|
|
411
411
|
{
|
|
412
412
|
"dir": "wasm/packages/runtime-core-as",
|
|
413
413
|
"name": "@pulse-compute/wasm-runtime-core-as",
|
|
414
|
-
"version": "1.0.0-beta.
|
|
414
|
+
"version": "1.0.0-beta.3",
|
|
415
415
|
"documentation": "docs/packages/implementation-packages.md",
|
|
416
416
|
"role": "implementation",
|
|
417
417
|
"tier": "implementation",
|
|
@@ -425,7 +425,7 @@
|
|
|
425
425
|
{
|
|
426
426
|
"dir": "wasm/packages/schema-json",
|
|
427
427
|
"name": "@pulse-compute/wasm-schema-json",
|
|
428
|
-
"version": "1.0.0-beta.
|
|
428
|
+
"version": "1.0.0-beta.3",
|
|
429
429
|
"documentation": "docs/packages/implementation-packages.md",
|
|
430
430
|
"role": "implementation",
|
|
431
431
|
"tier": "implementation",
|
package/src/documentation.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Generated from release/pulse-release-manifest.json by wasm/scripts/sync-reference-docs.cjs.
|
|
4
4
|
const DOCUMENTATION_ORIGIN = "https://pulsecompute.io";
|
|
5
5
|
const DOCUMENTATION_BASE_PATH = "";
|
|
6
|
-
const DOCUMENTATION_VERSION = "v1.0.0-beta.
|
|
6
|
+
const DOCUMENTATION_VERSION = "v1.0.0-beta.3";
|
|
7
7
|
const DOCUMENTATION_LATEST_ALIAS = "latest";
|
|
8
8
|
|
|
9
9
|
function trimSlashes(value) { return String(value || '').replace(/^\/+|\/+$/g, ''); }
|
|
@@ -36,7 +36,7 @@ function field(value) {
|
|
|
36
36
|
|
|
37
37
|
const CONFIG_SECTIONS = Object.freeze([
|
|
38
38
|
Object.freeze({ id: 'project', title: 'Project and provider selection', description: 'Select the canonical entry, provider, and build output.' }),
|
|
39
|
-
Object.freeze({ id: 'crypto', title: 'Cryptographic requirements', description: 'Declare exact algorithms for the global or selected profile and resolve one target realization without fallback. This surface is part of the synchronized 1.0.0-beta.
|
|
39
|
+
Object.freeze({ id: 'crypto', title: 'Cryptographic requirements', description: 'Declare exact algorithms for the global or selected profile and resolve one target realization without fallback. This surface is part of the synchronized 1.0.0-beta.3 package set.' }),
|
|
40
40
|
Object.freeze({ id: 'schemas', title: 'JSON schema policy', description: 'Configure bounded schema-body policy. Conventional projects declare registry identity only through pulse.schema.' }),
|
|
41
41
|
Object.freeze({ id: 'dev', title: 'Local development', description: 'Configure the foreground local server and local-only provider inputs.' }),
|
|
42
42
|
...providerConfigSections
|
package/src/project-execution.js
CHANGED
|
@@ -21,9 +21,6 @@ const {
|
|
|
21
21
|
compileCanonicalNativePlan,
|
|
22
22
|
writeCanonicalNativeModule
|
|
23
23
|
} = require('@pulse-compute/wasm-compiler/canonical-native-compiler');
|
|
24
|
-
const {
|
|
25
|
-
executeCanonicalNativeModule
|
|
26
|
-
} = require('@pulse-compute/wasm-host-runtime/runtime/canonical-native-host');
|
|
27
24
|
const { PulseProjectError, projectJson, relative } = require('./project-config.js');
|
|
28
25
|
const { describeDiagnostic, decorateDiagnostic, httpStatusForDiagnostic } = require('./diagnostics.js');
|
|
29
26
|
const {
|
|
@@ -494,13 +491,23 @@ function providerExecutionOptions(project, values = {}) {
|
|
|
494
491
|
return driver.executionOptions ? driver.executionOptions(project.providerConfig, resolved) : resolved;
|
|
495
492
|
}
|
|
496
493
|
|
|
497
|
-
function
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
494
|
+
function requiresExactNativeExecution(compiled) {
|
|
495
|
+
const algorithms = compiled.cryptoRealizationPlan && compiled.cryptoRealizationPlan.algorithms || [];
|
|
496
|
+
const operations = compiled.metadata && compiled.metadata.providerOperations || [];
|
|
497
|
+
return algorithms.some((entry) => entry.kind === 'guest-linked' || entry.kind === 'guest-source')
|
|
498
|
+
|| operations.some((entry) => ['kv.getVersioned', 'kv.insertIfAbsent', 'kv.compareAndSwap'].includes(entry.capability));
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
function prepareNativeExecution(project, compiled, native) {
|
|
502
|
+
const driver = providerDriver(project);
|
|
503
|
+
if (typeof driver.prepareNativeExecution !== 'function') {
|
|
504
|
+
throw new TypeError(`Provider ${driver.id} cannot execute this Native artifact locally.`);
|
|
505
|
+
}
|
|
506
|
+
const execute = driver.prepareNativeExecution(providerTargetInvocation(
|
|
507
|
+
project, 'execute-native', native.plan, providerLoweringPlan(project, compiled.metadata), { native }
|
|
508
|
+
));
|
|
509
|
+
if (typeof execute !== 'function') throw new TypeError('Provider Native execution preparation must return a function.');
|
|
510
|
+
return execute;
|
|
504
511
|
}
|
|
505
512
|
|
|
506
513
|
function providerLoweringPlan(project, metadata) {
|
|
@@ -1525,11 +1532,12 @@ async function runProjectTests(project, options = {}) {
|
|
|
1525
1532
|
assertImplementedTarget(project, 'test');
|
|
1526
1533
|
const executeCanonicalProgram = driver.execute;
|
|
1527
1534
|
if (!compiled) compiled = compileProject(project);
|
|
1528
|
-
const
|
|
1529
|
-
const program =
|
|
1530
|
-
const native = hasEventCase ||
|
|
1535
|
+
const exactNativeExecution = requiresExactNativeExecution(compiled);
|
|
1536
|
+
const program = exactNativeExecution ? null : loadCanonicalModule(compiled);
|
|
1537
|
+
const native = hasEventCase || exactNativeExecution
|
|
1531
1538
|
? compileNativeProjectInMemory(project, { ...options, compiled }).native
|
|
1532
1539
|
: null;
|
|
1540
|
+
const executeNative = exactNativeExecution ? prepareNativeExecution(project, compiled, native) : null;
|
|
1533
1541
|
const cases = [];
|
|
1534
1542
|
let failed = 0;
|
|
1535
1543
|
for (const testCase of selected) {
|
|
@@ -1567,8 +1575,8 @@ async function runProjectTests(project, options = {}) {
|
|
|
1567
1575
|
continuationTtlMs: testCase.continuationTtlMs,
|
|
1568
1576
|
executionId: `test:${testCase.name}`
|
|
1569
1577
|
});
|
|
1570
|
-
const execution =
|
|
1571
|
-
? await
|
|
1578
|
+
const execution = exactNativeExecution
|
|
1579
|
+
? await executeNative(executionOptions)
|
|
1572
1580
|
: await executeCanonicalProgram(program, executionOptions);
|
|
1573
1581
|
if (testCase.expect.error) throw new assert.AssertionError({ message: `${testCase.name}: expected ${testCase.expect.error.name || 'an error'} but execution completed` });
|
|
1574
1582
|
assertExpectation(testCase, Object.freeze({
|
|
@@ -1581,6 +1589,7 @@ async function runProjectTests(project, options = {}) {
|
|
|
1581
1589
|
durationMs: Number(process.hrtime.bigint() - started) / 1e6,
|
|
1582
1590
|
response: Object.freeze({ status: execution.response.status, bodyClass: execution.response.bodyClass, kind: execution.response.kind }),
|
|
1583
1591
|
effects: execution.effectCount,
|
|
1592
|
+
...(execution.evidence ? { executionEvidence: execution.evidence } : {}),
|
|
1584
1593
|
continuations: execution.continuations.map((entry) => Object.freeze({ id: entry.id, state: entry.state, effectIds: entry.effectIds })),
|
|
1585
1594
|
resolutionOrder: execution.resolutionOrder
|
|
1586
1595
|
}));
|
|
@@ -2611,6 +2620,12 @@ async function startJavascriptDevServer(project, options = {}) {
|
|
|
2611
2620
|
config: project.dev.config,
|
|
2612
2621
|
secrets: project.dev.secrets,
|
|
2613
2622
|
kv: project.dev.kv,
|
|
2623
|
+
bindings: project.providerConfig.bindings,
|
|
2624
|
+
s3FetchImplementation: javascript.createFixtureFetch(
|
|
2625
|
+
project.dev.fetches,
|
|
2626
|
+
project.dev.networkFetch ? globalThis.fetch : undefined,
|
|
2627
|
+
{ rawResponse: true }
|
|
2628
|
+
),
|
|
2614
2629
|
fetchImplementation: javascript.createFixtureFetch(
|
|
2615
2630
|
project.dev.fetches,
|
|
2616
2631
|
project.dev.networkFetch ? globalThis.fetch : undefined
|
|
@@ -2680,7 +2695,8 @@ async function startDevServer(project, options = {}) {
|
|
|
2680
2695
|
let compiled;
|
|
2681
2696
|
let program;
|
|
2682
2697
|
let native;
|
|
2683
|
-
let
|
|
2698
|
+
let executeNative;
|
|
2699
|
+
let exactNativeExecution = false;
|
|
2684
2700
|
let packageArtifacts = Object.freeze([]);
|
|
2685
2701
|
let compileError;
|
|
2686
2702
|
let reloadTimer;
|
|
@@ -2705,15 +2721,17 @@ async function startDevServer(project, options = {}) {
|
|
|
2705
2721
|
function reload(reason) {
|
|
2706
2722
|
try {
|
|
2707
2723
|
const nextCompiled = compileProject(project);
|
|
2708
|
-
const
|
|
2709
|
-
const nextProgram =
|
|
2710
|
-
const nextNative =
|
|
2724
|
+
const nextExactNativeExecution = requiresExactNativeExecution(nextCompiled);
|
|
2725
|
+
const nextProgram = nextExactNativeExecution ? null : loadCanonicalModule(nextCompiled);
|
|
2726
|
+
const nextNative = nextExactNativeExecution
|
|
2711
2727
|
? compileNativeProjectInMemory(project, { ...options, compiled: nextCompiled }).native
|
|
2712
2728
|
: null;
|
|
2729
|
+
const nextExecuteNative = nextExactNativeExecution ? prepareNativeExecution(project, nextCompiled, nextNative) : null;
|
|
2713
2730
|
compiled = nextCompiled;
|
|
2714
2731
|
program = nextProgram;
|
|
2715
2732
|
native = nextNative;
|
|
2716
|
-
|
|
2733
|
+
executeNative = nextExecuteNative;
|
|
2734
|
+
exactNativeExecution = nextExactNativeExecution;
|
|
2717
2735
|
packageArtifacts = packageRealizationArtifactsForCompiled(nextCompiled);
|
|
2718
2736
|
compileError = undefined;
|
|
2719
2737
|
syncWatchFiles(compiled.watchFiles);
|
|
@@ -2726,8 +2744,8 @@ async function startDevServer(project, options = {}) {
|
|
|
2726
2744
|
watchFiles: Object.freeze(compiled.watchFiles.map((file) => relative(file, project.root)))
|
|
2727
2745
|
}));
|
|
2728
2746
|
} catch (error) {
|
|
2729
|
-
if (!program) compileError = error;
|
|
2730
|
-
events(Object.freeze({ event: 'compile-error', retainedLastGoodProgram: Boolean(program), error: errorSummary(error, project.dev.secrets) }));
|
|
2747
|
+
if (!program && !executeNative) compileError = error;
|
|
2748
|
+
events(Object.freeze({ event: 'compile-error', retainedLastGoodProgram: Boolean(program || executeNative), error: errorSummary(error, project.dev.secrets) }));
|
|
2731
2749
|
}
|
|
2732
2750
|
}
|
|
2733
2751
|
function scheduleReload() {
|
|
@@ -2758,8 +2776,8 @@ async function startDevServer(project, options = {}) {
|
|
|
2758
2776
|
liveFetch: project.dev.networkFetch,
|
|
2759
2777
|
executionId: `dev:${++handled}`
|
|
2760
2778
|
});
|
|
2761
|
-
const execution =
|
|
2762
|
-
? await
|
|
2779
|
+
const execution = exactNativeExecution
|
|
2780
|
+
? await executeNative(executionOptions)
|
|
2763
2781
|
: await executeCanonicalProgram(program, executionOptions);
|
|
2764
2782
|
writeNodeHttpResponse(res, execution.response);
|
|
2765
2783
|
events(Object.freeze({ event: 'request', method: req.method || 'GET', path: url.pathname, status: execution.response.status, effects: execution.effectCount }));
|