@prestack/thread 0.0.2 → 0.1.0
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/CHANGELOG.md +98 -0
- package/dist/core/{asking.d.ts → answers.d.ts} +6 -14
- package/dist/core/{asking.js → answers.js} +13 -332
- package/dist/core/{asking.ts → answers.ts} +14 -357
- package/dist/core/attach.js +2 -2
- package/dist/core/attach.ts +2 -3
- package/dist/core/chain.js +4 -11
- package/dist/core/chain.ts +4 -3
- package/dist/core/client.d.ts +57 -0
- package/dist/core/client.js +186 -0
- package/dist/core/client.ts +227 -0
- package/dist/core/descend.d.ts +2 -0
- package/dist/core/descend.js +109 -16
- package/dist/core/descend.ts +120 -16
- package/dist/core/files.d.ts +45 -0
- package/dist/core/files.js +95 -0
- package/dist/core/files.ts +137 -0
- package/dist/core/init.d.ts +1 -0
- package/dist/core/init.js +10 -2
- package/dist/core/init.ts +8 -2
- package/dist/core/invoked.js +1 -1
- package/dist/core/invoked.ts +1 -1
- package/dist/core/rows.d.ts +2 -0
- package/dist/core/rows.js +65 -0
- package/dist/core/rows.ts +58 -0
- package/dist/core/tree.js +1 -1
- package/dist/core/tree.ts +1 -1
- package/dist/derivation/attach.js +0 -12
- package/dist/derivation/attach.ts +0 -12
- package/dist/derivation/generators/build.js +8 -7
- package/dist/derivation/generators/build.ts +8 -7
- package/dist/derivation/generators/release.d.ts +1 -1
- package/dist/derivation/generators/release.js +15 -23
- package/dist/derivation/generators/release.ts +15 -15
- package/dist/integrations/attach.js +1 -19
- package/dist/integrations/attach.ts +1 -19
- package/dist/integrations/generators/read.js +2 -2
- package/dist/integrations/generators/read.ts +4 -4
- package/dist/integrations/generators/vault.js +4 -12
- package/dist/integrations/generators/vault.ts +4 -4
- package/dist/integrations/module.js +5 -3
- package/dist/integrations/module.ts +5 -3
- package/dist/integrations/vault.js +5 -5
- package/dist/integrations/vault.ts +5 -5
- package/dist/integrity/attach.js +0 -12
- package/dist/integrity/attach.ts +0 -12
- package/dist/integrity/check-threads.js +1 -1
- package/dist/integrity/check-threads.ts +1 -1
- package/dist/integrity/constraint.d.ts +11 -2
- package/dist/integrity/constraint.js +163 -20
- package/dist/integrity/constraint.ts +174 -22
- package/dist/integrity/generators/compiler.js +1 -1
- package/dist/integrity/generators/compiler.ts +1 -1
- package/dist/integrity/generators/gate.js +8 -16
- package/dist/integrity/generators/gate.ts +8 -7
- package/dist/integrity/generators/publish.js +14 -26
- package/dist/integrity/generators/publish.ts +14 -17
- package/dist/integrity/generators/trial.d.ts +2 -2
- package/dist/integrity/generators/trial.js +108 -50
- package/dist/integrity/generators/trial.ts +107 -48
- package/dist/integrity/lint.js +3 -3
- package/dist/integrity/lint.ts +3 -3
- package/dist/integrity/lsp/diagnostics.js +1 -1
- package/dist/integrity/lsp/diagnostics.ts +1 -1
- package/dist/integrity/lsp/lint.js +1 -1
- package/dist/integrity/lsp/lint.ts +1 -1
- package/dist/integrity/slopnator.d.ts +1 -14
- package/dist/integrity/slopnator.js +8 -40
- package/dist/integrity/slopnator.ts +9 -51
- package/dist/integrity/slopnators/sl_broken_lineage.js +4 -2
- package/dist/integrity/slopnators/sl_broken_lineage.ts +4 -2
- package/dist/integrity/slopnators/sl_declared_elsewhere.js +24 -3
- package/dist/integrity/slopnators/sl_declared_elsewhere.ts +24 -3
- package/dist/integrity/slopnators/sl_derived_drift.js +10 -4
- package/dist/integrity/slopnators/sl_derived_drift.ts +10 -4
- package/dist/integrity/slopnators/sl_inert_island.js +7 -13
- package/dist/integrity/slopnators/sl_inert_island.ts +7 -16
- package/dist/integrity/slopnators/sl_inert_slopnator.js +8 -8
- package/dist/integrity/slopnators/sl_inert_slopnator.ts +8 -8
- package/dist/integrity/slopnators/sl_missing_row.js +14 -9
- package/dist/integrity/slopnators/sl_missing_row.ts +14 -10
- package/dist/integrity/slopnators/sl_no_child_process.js +8 -8
- package/dist/integrity/slopnators/sl_no_child_process.ts +8 -8
- package/dist/integrity/slopnators/sl_no_import_cycle.js +1 -1
- package/dist/integrity/slopnators/sl_no_import_cycle.ts +1 -1
- package/dist/integrity/slopnators/sl_no_such_command.js +20 -5
- package/dist/integrity/slopnators/sl_no_such_command.ts +22 -5
- package/dist/integrity/slopnators/sl_only_takes_a_literal.js +8 -8
- package/dist/integrity/slopnators/sl_only_takes_a_literal.ts +8 -8
- package/dist/integrity/slopnators/sl_stale_path.js +91 -18
- package/dist/integrity/slopnators/sl_stale_path.ts +97 -18
- package/dist/integrity/slopnators/sl_twice_meant.js +25 -2
- package/dist/integrity/slopnators/sl_twice_meant.ts +28 -2
- package/dist/integrity/slopnators/sl_twice_parented.js +26 -5
- package/dist/integrity/slopnators/sl_twice_parented.ts +26 -5
- package/dist/integrity/slopnators/sl_undeclared_node.js +18 -2
- package/dist/integrity/slopnators/sl_undeclared_node.ts +18 -2
- package/dist/integrity/slopnators/sl_undeclared_operation.js +3 -1
- package/dist/integrity/slopnators/sl_undeclared_operation.ts +3 -1
- package/dist/integrity/slopnators/sl_undeclared_variant.js +6 -2
- package/dist/integrity/slopnators/sl_undeclared_variant.ts +6 -2
- package/dist/integrity/slopnators/sl_ungoverned_island.js +3 -4
- package/dist/integrity/slopnators/sl_ungoverned_island.ts +3 -4
- package/dist/integrity/slopnators/sl_unkept_rows.js +1 -1
- package/dist/integrity/slopnators/sl_unkept_rows.ts +1 -1
- package/dist/integrity/slopnators/sl_unpaired_member.js +13 -8
- package/dist/integrity/slopnators/sl_unpaired_member.ts +16 -8
- package/dist/integrity/slopnators/sl_unpaired_slopnator.js +16 -3
- package/dist/integrity/slopnators/sl_unpaired_slopnator.ts +16 -3
- package/dist/integrity/slopnators/sl_unthreaded.d.ts +1 -0
- package/dist/integrity/slopnators/sl_unthreaded.js +18 -10
- package/dist/integrity/slopnators/sl_unthreaded.ts +19 -11
- package/dist/integrity/slopnators/sl_untranslated_key.js +1 -1
- package/dist/integrity/slopnators/sl_untranslated_key.ts +1 -1
- package/dist/integrity/slopnators/sl_unversioned.js +16 -2
- package/dist/integrity/slopnators/sl_unversioned.ts +16 -2
- package/dist/integrity/sweep.js +17 -3
- package/dist/integrity/sweep.ts +20 -3
- package/dist/knowledge/attach.js +0 -6
- package/dist/knowledge/attach.ts +0 -6
- package/dist/knowledge/generators/docsgen.js +12 -3
- package/dist/knowledge/generators/docsgen.ts +12 -2
- package/dist/knowledge/generators/glossary.js +1 -1
- package/dist/knowledge/generators/glossary.ts +1 -1
- package/dist/operations/attach.js +2 -26
- package/dist/operations/attach.ts +2 -27
- package/dist/operations/dispatch.js +2 -3
- package/dist/operations/dispatch.ts +2 -3
- package/dist/operations/generators/capability.js +4 -7
- package/dist/operations/generators/capability.ts +3 -6
- package/dist/operations/generators/compile.js +8 -13
- package/dist/operations/generators/compile.ts +8 -4
- package/dist/operations/generators/permits.js +4 -13
- package/dist/operations/generators/permits.ts +3 -3
- package/dist/operations/generators/seed.js +5 -2
- package/dist/operations/generators/seed.ts +6 -2
- package/dist/operations/generators/trial.js +10 -10
- package/dist/operations/generators/trial.ts +10 -10
- package/dist/operations/http.js +4 -1
- package/dist/operations/http.ts +6 -1
- package/package.json +2 -2
- package/dist/core/cli.d.ts +0 -2
- package/dist/core/cli.js +0 -1761
- package/dist/core/cli.ts +0 -2004
- package/dist/core/generators/meta.d.ts +0 -2
- package/dist/core/generators/meta.js +0 -829
- package/dist/core/generators/meta.ts +0 -1006
- package/dist/derivation/generators/derivation.d.ts +0 -3
- package/dist/derivation/generators/derivation.js +0 -273
- package/dist/derivation/generators/derivation.ts +0 -347
- package/dist/derivation/makers/release.d.ts +0 -1
- package/dist/derivation/makers/release.js +0 -107
- package/dist/derivation/makers/release.ts +0 -135
- package/dist/integrations/generators/secret.d.ts +0 -1
- package/dist/integrations/generators/secret.js +0 -233
- package/dist/integrations/generators/secret.ts +0 -289
- package/dist/integrations/generators/target.d.ts +0 -1
- package/dist/integrations/generators/target.js +0 -775
- package/dist/integrations/generators/target.ts +0 -944
- package/dist/integrity/generators/rule.d.ts +0 -2
- package/dist/integrity/generators/rule.js +0 -213
- package/dist/integrity/generators/rule.ts +0 -271
- package/dist/integrity/generators/seal.d.ts +0 -4
- package/dist/integrity/generators/seal.js +0 -101
- package/dist/integrity/generators/seal.ts +0 -117
- package/dist/integrity/sealed.d.ts +0 -1
- package/dist/integrity/sealed.js +0 -56
- package/dist/integrity/sealed.ts +0 -56
- package/dist/knowledge/generators/skills.d.ts +0 -1
- package/dist/knowledge/generators/skills.js +0 -222
- package/dist/knowledge/generators/skills.ts +0 -263
- package/dist/operations/generators/grant.d.ts +0 -1
- package/dist/operations/generators/grant.js +0 -267
- package/dist/operations/generators/grant.ts +0 -336
- package/dist/operations/generators/operation.d.ts +0 -1
- package/dist/operations/generators/operation.js +0 -811
- package/dist/operations/generators/operation.ts +0 -972
- package/dist/operations/makers/capability.d.ts +0 -1
- package/dist/operations/makers/capability.js +0 -117
- package/dist/operations/makers/capability.ts +0 -166
- package/dist/operations/makers/trial.d.ts +0 -1
- package/dist/operations/makers/trial.js +0 -413
- package/dist/operations/makers/trial.ts +0 -520
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Constraint } from './constraint.ts';
|
|
1
|
+
import { type Constraint, type Proof } from './constraint.ts';
|
|
2
2
|
export declare const NOT_WRITTEN: unique symbol;
|
|
3
3
|
export declare const SHIPPED: string;
|
|
4
4
|
export declare const SEEDED: string;
|
|
@@ -48,14 +48,6 @@ export type Visiting = Reading & {
|
|
|
48
48
|
export declare const reads: (one: Slopnator) => one is Reading;
|
|
49
49
|
export declare const visits: (one: Slopnator) => one is Visiting;
|
|
50
50
|
export declare const sweeps: (one: Slopnator) => one is Reading;
|
|
51
|
-
export interface Sourced {
|
|
52
|
-
readonly at: string;
|
|
53
|
-
readonly source: string;
|
|
54
|
-
}
|
|
55
|
-
export type Proof = string | {
|
|
56
|
-
readonly files: readonly Sourced[];
|
|
57
|
-
readonly at: string;
|
|
58
|
-
};
|
|
59
51
|
export interface Byproduct {
|
|
60
52
|
readonly path: string;
|
|
61
53
|
readonly content: string;
|
|
@@ -69,11 +61,6 @@ export declare class UnloadableSlopnatorError extends Error {
|
|
|
69
61
|
export declare class UnreadableRulesError extends Error {
|
|
70
62
|
constructor(at: string, because: string);
|
|
71
63
|
}
|
|
72
|
-
export declare class BrokenSealError extends Error {
|
|
73
|
-
constructor(at: string, why: string);
|
|
74
|
-
}
|
|
75
|
-
export declare function unsealed(home?: string): readonly string[];
|
|
76
|
-
export declare function verify(): void;
|
|
77
64
|
export declare function load(root: string, all: readonly Constraint[]): Promise<ReadonlyMap<string, Slopnator>>;
|
|
78
65
|
export declare function proofsOf(rule: Constraint, slopnators: ReadonlyMap<string, Slopnator>): {
|
|
79
66
|
readonly wrong: readonly Proof[];
|
|
@@ -7,18 +7,15 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
7
7
|
return path;
|
|
8
8
|
};
|
|
9
9
|
import { spawnSync } from 'node:child_process';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { dirname, join, sep } from 'node:path';
|
|
10
|
+
import { existsSync, readFileSync, readdirSync, writeFileSync } from "../core/files.js";
|
|
11
|
+
import { dirname, join } from 'node:path';
|
|
13
12
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
14
13
|
import { invoked } from "../core/invoked.js";
|
|
15
14
|
import { listBounds, quoted, withSeed } from "../core/rows.js";
|
|
16
15
|
import { CONSTRAINTS } from "./constraint.js";
|
|
17
|
-
import { SEALED } from "./sealed.js";
|
|
18
16
|
import { findTree, inTree } from "../core/tree.js";
|
|
19
17
|
export const NOT_WRITTEN = Symbol.for('thread.slopnator.not_written');
|
|
20
18
|
const HOME = dirname(fileURLToPath(import.meta.url));
|
|
21
|
-
const BUILT = dirname(dirname(HOME));
|
|
22
19
|
export const SHIPPED = `${HOME}/slopnators`;
|
|
23
20
|
export const SEEDED = `${findTree().name}/slopnators`;
|
|
24
21
|
function homes(root) {
|
|
@@ -103,40 +100,7 @@ export class UnreadableRulesError extends Error {
|
|
|
103
100
|
this.name = 'UnreadableRulesError';
|
|
104
101
|
}
|
|
105
102
|
}
|
|
106
|
-
export class BrokenSealError extends Error {
|
|
107
|
-
constructor(at, why) {
|
|
108
|
-
super(`${at} ${why} — this package is not the one that was published, so nothing it refuses or allows can be trusted. ` +
|
|
109
|
-
'Reinstall it (`pnpm install --frozen-lockfile` re-verifies the published bytes), or if you meant to change it, run `thread seal` and publish that.');
|
|
110
|
-
this.name = 'BrokenSealError';
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
const INSTALLED = HOME.includes(`${sep}node_modules${sep}`);
|
|
114
|
-
export function unsealed(home = HOME) {
|
|
115
|
-
const broken = [];
|
|
116
|
-
for (const [at, hash] of Object.entries(SEALED)) {
|
|
117
|
-
let held;
|
|
118
|
-
try {
|
|
119
|
-
held = readFileSync(join(home, at));
|
|
120
|
-
}
|
|
121
|
-
catch {
|
|
122
|
-
broken.push(`${at} is missing`);
|
|
123
|
-
continue;
|
|
124
|
-
}
|
|
125
|
-
if (createHash('sha256').update(held).digest('hex') !== hash)
|
|
126
|
-
broken.push(`${at} differs from the seal`);
|
|
127
|
-
}
|
|
128
|
-
return broken;
|
|
129
|
-
}
|
|
130
|
-
export function verify() {
|
|
131
|
-
if (!INSTALLED)
|
|
132
|
-
return;
|
|
133
|
-
const broken = unsealed(BUILT);
|
|
134
|
-
const first = broken[0];
|
|
135
|
-
if (first !== undefined)
|
|
136
|
-
throw new BrokenSealError(first.split(' ')[0] ?? '', first.split(' ').slice(1).join(' '));
|
|
137
|
-
}
|
|
138
103
|
export async function load(root, all) {
|
|
139
|
-
verify();
|
|
140
104
|
const found = new Map();
|
|
141
105
|
for (const rule of all) {
|
|
142
106
|
const name = slopnatorName(rule.id);
|
|
@@ -161,7 +125,12 @@ export async function load(root, all) {
|
|
|
161
125
|
return found;
|
|
162
126
|
}
|
|
163
127
|
export function proofsOf(rule, slopnators) {
|
|
164
|
-
const
|
|
128
|
+
const slopnator = slopnators.get(slopnatorName(rule.id));
|
|
129
|
+
const slopnated = slopnator?.proves;
|
|
130
|
+
const own = (slopnated?.wrong.length ?? 0) + (slopnated?.right.length ?? 0);
|
|
131
|
+
if (slopnator !== undefined && !reads(slopnator) && own > 0) {
|
|
132
|
+
return { wrong: slopnated?.wrong ?? [], right: slopnated?.right ?? [] };
|
|
133
|
+
}
|
|
165
134
|
return { wrong: [rule.wrong, ...(slopnated?.wrong ?? [])], right: [rule.right, ...(slopnated?.right ?? [])] };
|
|
166
135
|
}
|
|
167
136
|
export function scaffold() {
|
|
@@ -176,7 +145,6 @@ export const slopnator: Slopnator = {
|
|
|
176
145
|
}
|
|
177
146
|
export function write(root, byproduct) {
|
|
178
147
|
const path = join(root, byproduct.path);
|
|
179
|
-
mkdirSync(dirname(path), { recursive: true });
|
|
180
148
|
writeFileSync(path, byproduct.content, 'utf8');
|
|
181
149
|
}
|
|
182
150
|
export function onDisk(root) {
|
|
@@ -1,23 +1,19 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process'
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { dirname, join, sep } from 'node:path'
|
|
2
|
+
import { existsSync, readFileSync, readdirSync, writeFileSync } from '../core/files.ts'
|
|
3
|
+
import { dirname, join } from 'node:path'
|
|
5
4
|
import { fileURLToPath, pathToFileURL } from 'node:url'
|
|
6
5
|
|
|
7
6
|
import { invoked } from '../core/invoked.ts'
|
|
8
7
|
|
|
9
8
|
import { listBounds, quoted, withSeed } from '../core/rows.ts'
|
|
10
9
|
|
|
11
|
-
import { CONSTRAINTS, type Constraint } from './constraint.ts'
|
|
12
|
-
import { SEALED } from './sealed.ts'
|
|
10
|
+
import { CONSTRAINTS, type Constraint, type Proof, type Sourced } from './constraint.ts'
|
|
13
11
|
import { findTree, inTree } from '../core/tree.ts'
|
|
14
12
|
|
|
15
13
|
export const NOT_WRITTEN = Symbol.for('thread.slopnator.not_written')
|
|
16
14
|
|
|
17
15
|
const HOME = dirname(fileURLToPath(import.meta.url))
|
|
18
16
|
|
|
19
|
-
const BUILT = dirname(dirname(HOME))
|
|
20
|
-
|
|
21
17
|
export const SHIPPED = `${HOME}/slopnators`
|
|
22
18
|
|
|
23
19
|
export const SEEDED = `${findTree().name}/slopnators`
|
|
@@ -98,13 +94,6 @@ export const visits = (one: Slopnator): one is Visiting => 'holds' in one && one
|
|
|
98
94
|
|
|
99
95
|
export const sweeps = (one: Slopnator): one is Reading => 'holds' in one && one.on === undefined
|
|
100
96
|
|
|
101
|
-
export interface Sourced {
|
|
102
|
-
readonly at: string
|
|
103
|
-
readonly source: string
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export type Proof = string | { readonly files: readonly Sourced[]; readonly at: string }
|
|
107
|
-
|
|
108
97
|
export interface Byproduct {
|
|
109
98
|
readonly path: string
|
|
110
99
|
readonly content: string
|
|
@@ -170,42 +159,7 @@ export class UnreadableRulesError extends Error {
|
|
|
170
159
|
}
|
|
171
160
|
}
|
|
172
161
|
|
|
173
|
-
export class BrokenSealError extends Error {
|
|
174
|
-
constructor(at: string, why: string) {
|
|
175
|
-
super(
|
|
176
|
-
`${at} ${why} — this package is not the one that was published, so nothing it refuses or allows can be trusted. ` +
|
|
177
|
-
'Reinstall it (`pnpm install --frozen-lockfile` re-verifies the published bytes), or if you meant to change it, run `thread seal` and publish that.',
|
|
178
|
-
)
|
|
179
|
-
this.name = 'BrokenSealError'
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
const INSTALLED = HOME.includes(`${sep}node_modules${sep}`)
|
|
184
|
-
|
|
185
|
-
export function unsealed(home: string = HOME): readonly string[] {
|
|
186
|
-
const broken: string[] = []
|
|
187
|
-
for (const [at, hash] of Object.entries(SEALED)) {
|
|
188
|
-
let held: Buffer
|
|
189
|
-
try {
|
|
190
|
-
held = readFileSync(join(home, at))
|
|
191
|
-
} catch {
|
|
192
|
-
broken.push(`${at} is missing`)
|
|
193
|
-
continue
|
|
194
|
-
}
|
|
195
|
-
if (createHash('sha256').update(held).digest('hex') !== hash) broken.push(`${at} differs from the seal`)
|
|
196
|
-
}
|
|
197
|
-
return broken
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
export function verify(): void {
|
|
201
|
-
if (!INSTALLED) return
|
|
202
|
-
const broken = unsealed(BUILT)
|
|
203
|
-
const first = broken[0]
|
|
204
|
-
if (first !== undefined) throw new BrokenSealError(first.split(' ')[0] ?? '', first.split(' ').slice(1).join(' '))
|
|
205
|
-
}
|
|
206
|
-
|
|
207
162
|
export async function load(root: string, all: readonly Constraint[]): Promise<ReadonlyMap<string, Slopnator>> {
|
|
208
|
-
verify()
|
|
209
163
|
const found = new Map<string, Slopnator>()
|
|
210
164
|
for (const rule of all) {
|
|
211
165
|
const name = slopnatorName(rule.id)
|
|
@@ -234,7 +188,12 @@ export function proofsOf(
|
|
|
234
188
|
rule: Constraint,
|
|
235
189
|
slopnators: ReadonlyMap<string, Slopnator>,
|
|
236
190
|
): { readonly wrong: readonly Proof[]; readonly right: readonly Proof[] } {
|
|
237
|
-
const
|
|
191
|
+
const slopnator = slopnators.get(slopnatorName(rule.id))
|
|
192
|
+
const slopnated = slopnator?.proves
|
|
193
|
+
const own = (slopnated?.wrong.length ?? 0) + (slopnated?.right.length ?? 0)
|
|
194
|
+
if (slopnator !== undefined && !reads(slopnator) && own > 0) {
|
|
195
|
+
return { wrong: slopnated?.wrong ?? [], right: slopnated?.right ?? [] }
|
|
196
|
+
}
|
|
238
197
|
return { wrong: [rule.wrong, ...(slopnated?.wrong ?? [])], right: [rule.right, ...(slopnated?.right ?? [])] }
|
|
239
198
|
}
|
|
240
199
|
|
|
@@ -251,7 +210,6 @@ export const slopnator: Slopnator = {
|
|
|
251
210
|
|
|
252
211
|
export function write(root: string, byproduct: Byproduct): void {
|
|
253
212
|
const path = join(root, byproduct.path)
|
|
254
|
-
mkdirSync(dirname(path), { recursive: true })
|
|
255
213
|
writeFileSync(path, byproduct.content, 'utf8')
|
|
256
214
|
}
|
|
257
215
|
|
|
@@ -23,8 +23,10 @@ export const slopnator = {
|
|
|
23
23
|
right: [
|
|
24
24
|
{
|
|
25
25
|
files: [
|
|
26
|
-
{ at: '
|
|
27
|
-
{ at: '
|
|
26
|
+
{ at: 'thread/core/thread.ts', source: "export interface Threaded {\n readonly id?: string\n readonly at?: string\n readonly describes?: string\n readonly declares?: readonly Threaded[]\n readonly derives?: readonly Threaded[]\n readonly seeds?: readonly Threaded[]\n}\n" },
|
|
27
|
+
{ at: 'threads/thread.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const THREAD: Threaded = {\n declares: [\n {\n at: 'threads/_names_it.ts',\n },\n ],\n}\n" },
|
|
28
|
+
{ at: 'threads/_names_it.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const OWNER: Threaded = {\n declares: [\n {\n at: 'scripts/_probe_mid.ts',\n },\n ],\n}\n" },
|
|
29
|
+
{ at: 'scripts/_probe_mid.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const MID: Threaded = {\n declares: [\n {\n at: 'scripts/_probe_end.ts',\n },\n ],\n}\n" },
|
|
28
30
|
{ at: 'scripts/_probe_end.ts', source: 'export const END = 1\n' },
|
|
29
31
|
],
|
|
30
32
|
at: 'scripts/_probe_mid.ts',
|
|
@@ -24,8 +24,10 @@ export const slopnator: Slopnator = {
|
|
|
24
24
|
right: [
|
|
25
25
|
{
|
|
26
26
|
files: [
|
|
27
|
-
{ at: '
|
|
28
|
-
{ at: '
|
|
27
|
+
{ at: 'thread/core/thread.ts', source: "export interface Threaded {\n readonly id?: string\n readonly at?: string\n readonly describes?: string\n readonly declares?: readonly Threaded[]\n readonly derives?: readonly Threaded[]\n readonly seeds?: readonly Threaded[]\n}\n" },
|
|
28
|
+
{ at: 'threads/thread.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const THREAD: Threaded = {\n declares: [\n {\n at: 'threads/_names_it.ts',\n },\n ],\n}\n" },
|
|
29
|
+
{ at: 'threads/_names_it.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const OWNER: Threaded = {\n declares: [\n {\n at: 'scripts/_probe_mid.ts',\n },\n ],\n}\n" },
|
|
30
|
+
{ at: 'scripts/_probe_mid.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const MID: Threaded = {\n declares: [\n {\n at: 'scripts/_probe_end.ts',\n },\n ],\n}\n" },
|
|
29
31
|
{ at: 'scripts/_probe_end.ts', source: 'export const END = 1\n' },
|
|
30
32
|
],
|
|
31
33
|
at: 'scripts/_probe_mid.ts',
|
|
@@ -20,9 +20,30 @@ export const slopnator = {
|
|
|
20
20
|
},
|
|
21
21
|
proves: {
|
|
22
22
|
wrong: [
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
{
|
|
24
|
+
files: [
|
|
25
|
+
{ at: 'threads/thread.ts', source: "export const THREAD: Threaded = {\n declares: [\n { id: 'events', at: 'src/islands/events.ts', governs: ['app/_declare/events.ts'] },\n ],\n}\n" },
|
|
26
|
+
{ at: 'src/islands/events.ts', source: 'export const EventsIslandSchema = {}\nexport function defineEvents() {}\n' },
|
|
27
|
+
{ at: 'probe.tsx', source: 'export default defineEvents({ specVersion: 1, events: [] })\n' },
|
|
28
|
+
],
|
|
29
|
+
at: 'probe.tsx',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
files: [
|
|
33
|
+
{ at: 'threads/thread.ts', source: "export const THREAD: Threaded = {\n declares: [\n { id: 'permissions', at: 'src/islands/permissions.ts', governs: ['app/_declare/permissions.ts'] },\n ],\n}\n" },
|
|
34
|
+
{ at: 'src/islands/permissions.ts', source: 'export const PermissionsIslandSchema = {}\nexport function definePermissions() {}\n' },
|
|
35
|
+
{ at: 'probe.tsx', source: 'export default definePermissions({ specVersion: 1, entities: [] })\n' },
|
|
36
|
+
],
|
|
37
|
+
at: 'probe.tsx',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
files: [
|
|
41
|
+
{ at: 'threads/thread.ts', source: "export const THREAD: Threaded = {\n declares: [\n { id: 'navigation', at: 'src/islands/navigation.ts', governs: ['app/_declare/map.ts'] },\n ],\n}\n" },
|
|
42
|
+
{ at: 'src/islands/navigation.ts', source: 'export const NavigationIslandSchema = {}\nexport function defineMap() {}\n' },
|
|
43
|
+
{ at: 'probe.tsx', source: 'export default defineMap({ specVersion: 1, screens: [] })\n' },
|
|
44
|
+
],
|
|
45
|
+
at: 'probe.tsx',
|
|
46
|
+
},
|
|
26
47
|
],
|
|
27
48
|
right: [
|
|
28
49
|
"import events from 'app/_declare/events'",
|
|
@@ -26,9 +26,30 @@ export const slopnator: Slopnator = {
|
|
|
26
26
|
},
|
|
27
27
|
proves: {
|
|
28
28
|
wrong: [
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
{
|
|
30
|
+
files: [
|
|
31
|
+
{ at: 'threads/thread.ts', source: "export const THREAD: Threaded = {\n declares: [\n { id: 'events', at: 'src/islands/events.ts', governs: ['app/_declare/events.ts'] },\n ],\n}\n" },
|
|
32
|
+
{ at: 'src/islands/events.ts', source: 'export const EventsIslandSchema = {}\nexport function defineEvents() {}\n' },
|
|
33
|
+
{ at: 'probe.tsx', source: 'export default defineEvents({ specVersion: 1, events: [] })\n' },
|
|
34
|
+
],
|
|
35
|
+
at: 'probe.tsx',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
files: [
|
|
39
|
+
{ at: 'threads/thread.ts', source: "export const THREAD: Threaded = {\n declares: [\n { id: 'permissions', at: 'src/islands/permissions.ts', governs: ['app/_declare/permissions.ts'] },\n ],\n}\n" },
|
|
40
|
+
{ at: 'src/islands/permissions.ts', source: 'export const PermissionsIslandSchema = {}\nexport function definePermissions() {}\n' },
|
|
41
|
+
{ at: 'probe.tsx', source: 'export default definePermissions({ specVersion: 1, entities: [] })\n' },
|
|
42
|
+
],
|
|
43
|
+
at: 'probe.tsx',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
files: [
|
|
47
|
+
{ at: 'threads/thread.ts', source: "export const THREAD: Threaded = {\n declares: [\n { id: 'navigation', at: 'src/islands/navigation.ts', governs: ['app/_declare/map.ts'] },\n ],\n}\n" },
|
|
48
|
+
{ at: 'src/islands/navigation.ts', source: 'export const NavigationIslandSchema = {}\nexport function defineMap() {}\n' },
|
|
49
|
+
{ at: 'probe.tsx', source: 'export default defineMap({ specVersion: 1, screens: [] })\n' },
|
|
50
|
+
],
|
|
51
|
+
at: 'probe.tsx',
|
|
52
|
+
},
|
|
32
53
|
],
|
|
33
54
|
right: [
|
|
34
55
|
"import events from 'app/_declare/events'",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readFileSync } from
|
|
1
|
+
import { readFileSync } from "../../core/files.js";
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
3
|
import { atsIn } from "./sl_unthreaded.js";
|
|
4
4
|
import { reached } from "../../core/descend.js";
|
|
@@ -68,13 +68,17 @@ export const slopnator = {
|
|
|
68
68
|
wrong: [
|
|
69
69
|
{
|
|
70
70
|
files: [
|
|
71
|
-
{ at: '
|
|
71
|
+
{ at: 'thread/core/thread.ts', source: "export interface Threaded {\n readonly id?: string\n readonly at?: string\n readonly describes?: string\n readonly declares?: readonly Threaded[]\n readonly derives?: readonly Threaded[]\n readonly seeds?: readonly Threaded[]\n}\n" },
|
|
72
|
+
{ at: 'threads/thread.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const THREAD: Threaded = {\n declares: [\n {\n at: 'threads/_drift_probe.ts',\n },\n ],\n}\n" },
|
|
73
|
+
{ at: 'threads/_drift_probe.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const M: Threaded = {\n derives: [\n {\n at: 'scripts/_generated/gate.mjs',\n by: 'pnpm gate:generate',\n },\n ],\n}\n" },
|
|
72
74
|
],
|
|
73
75
|
at: 'threads/_drift_probe.ts',
|
|
74
76
|
},
|
|
75
77
|
{
|
|
76
78
|
files: [
|
|
77
|
-
{ at: '
|
|
79
|
+
{ at: 'thread/core/thread.ts', source: "export interface Threaded {\n readonly id?: string\n readonly at?: string\n readonly describes?: string\n readonly declares?: readonly Threaded[]\n readonly derives?: readonly Threaded[]\n readonly seeds?: readonly Threaded[]\n}\n" },
|
|
80
|
+
{ at: 'threads/thread.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const THREAD: Threaded = {\n declares: [\n {\n at: 'threads/_drift_probe.ts',\n },\n ],\n}\n" },
|
|
81
|
+
{ at: 'threads/_drift_probe.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const M: Threaded = {\n derives: [\n {\n at: 'scripts/finding.ts',\n },\n ],\n}\n" },
|
|
78
82
|
],
|
|
79
83
|
at: 'threads/_drift_probe.ts',
|
|
80
84
|
},
|
|
@@ -82,7 +86,9 @@ export const slopnator = {
|
|
|
82
86
|
right: [
|
|
83
87
|
{
|
|
84
88
|
files: [
|
|
85
|
-
{ at: '
|
|
89
|
+
{ at: 'thread/core/thread.ts', source: "export interface Threaded {\n readonly id?: string\n readonly at?: string\n readonly describes?: string\n readonly declares?: readonly Threaded[]\n readonly derives?: readonly Threaded[]\n readonly seeds?: readonly Threaded[]\n}\n" },
|
|
90
|
+
{ at: 'threads/thread.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const THREAD: Threaded = {\n declares: [\n {\n at: 'threads/_drift_probe.ts',\n },\n ],\n}\n" },
|
|
91
|
+
{ at: 'threads/_drift_probe.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const M: Threaded = {\n derives: [\n {\n at: 'scripts/_generated/gate.mjs',\n by: 'pnpm gate:generate',\n runs: 'pnpm gate:check',\n },\n ],\n}\n" },
|
|
86
92
|
],
|
|
87
93
|
at: 'threads/_drift_probe.ts',
|
|
88
94
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readFileSync } from '
|
|
1
|
+
import { readFileSync } from '../../core/files.ts'
|
|
2
2
|
import { resolve } from 'node:path'
|
|
3
3
|
|
|
4
4
|
import type { Slopnator } from '../slopnator.ts'
|
|
@@ -75,13 +75,17 @@ export const slopnator: Slopnator = {
|
|
|
75
75
|
wrong: [
|
|
76
76
|
{
|
|
77
77
|
files: [
|
|
78
|
-
{ at: '
|
|
78
|
+
{ at: 'thread/core/thread.ts', source: "export interface Threaded {\n readonly id?: string\n readonly at?: string\n readonly describes?: string\n readonly declares?: readonly Threaded[]\n readonly derives?: readonly Threaded[]\n readonly seeds?: readonly Threaded[]\n}\n" },
|
|
79
|
+
{ at: 'threads/thread.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const THREAD: Threaded = {\n declares: [\n {\n at: 'threads/_drift_probe.ts',\n },\n ],\n}\n" },
|
|
80
|
+
{ at: 'threads/_drift_probe.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const M: Threaded = {\n derives: [\n {\n at: 'scripts/_generated/gate.mjs',\n by: 'pnpm gate:generate',\n },\n ],\n}\n" },
|
|
79
81
|
],
|
|
80
82
|
at: 'threads/_drift_probe.ts',
|
|
81
83
|
},
|
|
82
84
|
{
|
|
83
85
|
files: [
|
|
84
|
-
{ at: '
|
|
86
|
+
{ at: 'thread/core/thread.ts', source: "export interface Threaded {\n readonly id?: string\n readonly at?: string\n readonly describes?: string\n readonly declares?: readonly Threaded[]\n readonly derives?: readonly Threaded[]\n readonly seeds?: readonly Threaded[]\n}\n" },
|
|
87
|
+
{ at: 'threads/thread.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const THREAD: Threaded = {\n declares: [\n {\n at: 'threads/_drift_probe.ts',\n },\n ],\n}\n" },
|
|
88
|
+
{ at: 'threads/_drift_probe.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const M: Threaded = {\n derives: [\n {\n at: 'scripts/finding.ts',\n },\n ],\n}\n" },
|
|
85
89
|
],
|
|
86
90
|
at: 'threads/_drift_probe.ts',
|
|
87
91
|
},
|
|
@@ -89,7 +93,9 @@ export const slopnator: Slopnator = {
|
|
|
89
93
|
right: [
|
|
90
94
|
{
|
|
91
95
|
files: [
|
|
92
|
-
{ at: '
|
|
96
|
+
{ at: 'thread/core/thread.ts', source: "export interface Threaded {\n readonly id?: string\n readonly at?: string\n readonly describes?: string\n readonly declares?: readonly Threaded[]\n readonly derives?: readonly Threaded[]\n readonly seeds?: readonly Threaded[]\n}\n" },
|
|
97
|
+
{ at: 'threads/thread.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const THREAD: Threaded = {\n declares: [\n {\n at: 'threads/_drift_probe.ts',\n },\n ],\n}\n" },
|
|
98
|
+
{ at: 'threads/_drift_probe.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const M: Threaded = {\n derives: [\n {\n at: 'scripts/_generated/gate.mjs',\n by: 'pnpm gate:generate',\n runs: 'pnpm gate:check',\n },\n ],\n}\n" },
|
|
93
99
|
],
|
|
94
100
|
at: 'threads/_drift_probe.ts',
|
|
95
101
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from
|
|
1
|
+
import { existsSync, readFileSync } from "../../core/files.js";
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
3
|
import { declaresIsland, here, rowsIn } from "./sl_unthreaded.js";
|
|
4
4
|
import { findTree } from "../../core/tree.js";
|
|
@@ -44,19 +44,15 @@ export const slopnator = {
|
|
|
44
44
|
wrong: [
|
|
45
45
|
{
|
|
46
46
|
files: [
|
|
47
|
-
{
|
|
48
|
-
|
|
49
|
-
source: "export const M: Islanding = {\n declares: [\n { id: 'entities', at: 'packages/core/spec/src/islands/entities.ts' },\n ],\n}\n",
|
|
50
|
-
},
|
|
47
|
+
{ at: 'threads/_inert_probe.ts', source: "export const M: Threaded = {\n declares: [\n { id: 'entities', at: 'src/islands/entities.ts' },\n ],\n}\n" },
|
|
48
|
+
{ at: 'src/islands/entities.ts', source: 'export const EntitiesIslandSchema = {}\n' },
|
|
51
49
|
],
|
|
52
50
|
at: 'threads/_inert_probe.ts',
|
|
53
51
|
},
|
|
54
52
|
{
|
|
55
53
|
files: [
|
|
56
|
-
{
|
|
57
|
-
|
|
58
|
-
source: "export const M: Islanding = {\n declares: [\n { id: 'events', at: 'packages/core/spec/src/islands/events.ts', governs: [] },\n ],\n}\n",
|
|
59
|
-
},
|
|
54
|
+
{ at: 'threads/_inert_probe.ts', source: "export const M: Threaded = {\n declares: [\n { id: 'events', at: 'src/islands/events.ts', governs: [] },\n ],\n}\n" },
|
|
55
|
+
{ at: 'src/islands/events.ts', source: 'export const EventsIslandSchema = {}\n' },
|
|
60
56
|
],
|
|
61
57
|
at: 'threads/_inert_probe.ts',
|
|
62
58
|
},
|
|
@@ -64,10 +60,8 @@ export const slopnator = {
|
|
|
64
60
|
right: [
|
|
65
61
|
{
|
|
66
62
|
files: [
|
|
67
|
-
{
|
|
68
|
-
|
|
69
|
-
source: "export const M: Islanding = {\n declares: [\n { id: 'events', at: 'packages/core/spec/src/islands/events.ts', governs: ['app/_declare/events.ts'] },\n ],\n}\n",
|
|
70
|
-
},
|
|
63
|
+
{ at: 'threads/_inert_probe.ts', source: "export const M: Threaded = {\n declares: [\n { id: 'events', at: 'src/islands/events.ts', governs: ['app/_declare/events.ts'] },\n ],\n}\n" },
|
|
64
|
+
{ at: 'src/islands/events.ts', source: 'export const EventsIslandSchema = {}\n' },
|
|
71
65
|
],
|
|
72
66
|
at: 'threads/_inert_probe.ts',
|
|
73
67
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from '
|
|
1
|
+
import { existsSync, readFileSync } from '../../core/files.ts'
|
|
2
2
|
import { resolve } from 'node:path'
|
|
3
3
|
|
|
4
4
|
import type { Slopnator } from '../slopnator.ts'
|
|
@@ -47,21 +47,15 @@ export const slopnator: Slopnator = {
|
|
|
47
47
|
wrong: [
|
|
48
48
|
{
|
|
49
49
|
files: [
|
|
50
|
-
{
|
|
51
|
-
|
|
52
|
-
source:
|
|
53
|
-
"export const M: Islanding = {\n declares: [\n { id: 'entities', at: 'packages/core/spec/src/islands/entities.ts' },\n ],\n}\n",
|
|
54
|
-
},
|
|
50
|
+
{ at: 'threads/_inert_probe.ts', source: "export const M: Threaded = {\n declares: [\n { id: 'entities', at: 'src/islands/entities.ts' },\n ],\n}\n" },
|
|
51
|
+
{ at: 'src/islands/entities.ts', source: 'export const EntitiesIslandSchema = {}\n' },
|
|
55
52
|
],
|
|
56
53
|
at: 'threads/_inert_probe.ts',
|
|
57
54
|
},
|
|
58
55
|
{
|
|
59
56
|
files: [
|
|
60
|
-
{
|
|
61
|
-
|
|
62
|
-
source:
|
|
63
|
-
"export const M: Islanding = {\n declares: [\n { id: 'events', at: 'packages/core/spec/src/islands/events.ts', governs: [] },\n ],\n}\n",
|
|
64
|
-
},
|
|
57
|
+
{ at: 'threads/_inert_probe.ts', source: "export const M: Threaded = {\n declares: [\n { id: 'events', at: 'src/islands/events.ts', governs: [] },\n ],\n}\n" },
|
|
58
|
+
{ at: 'src/islands/events.ts', source: 'export const EventsIslandSchema = {}\n' },
|
|
65
59
|
],
|
|
66
60
|
at: 'threads/_inert_probe.ts',
|
|
67
61
|
},
|
|
@@ -69,11 +63,8 @@ export const slopnator: Slopnator = {
|
|
|
69
63
|
right: [
|
|
70
64
|
{
|
|
71
65
|
files: [
|
|
72
|
-
{
|
|
73
|
-
|
|
74
|
-
source:
|
|
75
|
-
"export const M: Islanding = {\n declares: [\n { id: 'events', at: 'packages/core/spec/src/islands/events.ts', governs: ['app/_declare/events.ts'] },\n ],\n}\n",
|
|
76
|
-
},
|
|
66
|
+
{ at: 'threads/_inert_probe.ts', source: "export const M: Threaded = {\n declares: [\n { id: 'events', at: 'src/islands/events.ts', governs: ['app/_declare/events.ts'] },\n ],\n}\n" },
|
|
67
|
+
{ at: 'src/islands/events.ts', source: 'export const EventsIslandSchema = {}\n' },
|
|
77
68
|
],
|
|
78
69
|
at: 'threads/_inert_probe.ts',
|
|
79
70
|
},
|
|
@@ -41,35 +41,35 @@ export const slopnator = {
|
|
|
41
41
|
{
|
|
42
42
|
files: [
|
|
43
43
|
{
|
|
44
|
-
at: '
|
|
44
|
+
at: 'thread/integrity/slopnators/sl_probe_inert.ts',
|
|
45
45
|
source: 'export const slopnator = {\n on: [],\n holds: () => NOT_WRITTEN,\n proves: { wrong: [], right: [] },\n}\n',
|
|
46
46
|
},
|
|
47
47
|
],
|
|
48
|
-
at: '
|
|
48
|
+
at: 'thread/integrity/slopnators/sl_probe_inert.ts',
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
files: [
|
|
52
52
|
{
|
|
53
|
-
at: '
|
|
53
|
+
at: 'thread/integrity/slopnators/sl_probe_inert.ts',
|
|
54
54
|
source: "export const slopnator = {\n holds: (_node, at) => at.text.includes('nope') && 'found',\n proves: { wrong: [], right: ['const held = 1'] },\n}\n",
|
|
55
55
|
},
|
|
56
56
|
],
|
|
57
|
-
at: '
|
|
57
|
+
at: 'thread/integrity/slopnators/sl_probe_inert.ts',
|
|
58
58
|
},
|
|
59
59
|
],
|
|
60
60
|
right: [
|
|
61
61
|
{
|
|
62
62
|
files: [
|
|
63
63
|
{
|
|
64
|
-
at: '
|
|
64
|
+
at: 'thread/integrity/slopnators/sl_probe_inert.ts',
|
|
65
65
|
source: "export const slopnator = {\n holds: (_node, at) => at.text.includes('nope') && 'found',\n proves: { wrong: ['nope'], right: ['const held = 1'] },\n}\n",
|
|
66
66
|
},
|
|
67
67
|
],
|
|
68
|
-
at: '
|
|
68
|
+
at: 'thread/integrity/slopnators/sl_probe_inert.ts',
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
|
-
files: [{ at: '
|
|
72
|
-
at: '
|
|
71
|
+
files: [{ at: 'thread/integrity/slopnators/sl_probe_inert.ts', source: 'export const held = 1\n' }],
|
|
72
|
+
at: 'thread/integrity/slopnators/sl_probe_inert.ts',
|
|
73
73
|
},
|
|
74
74
|
],
|
|
75
75
|
},
|
|
@@ -58,35 +58,35 @@ export const slopnator: Slopnator = {
|
|
|
58
58
|
{
|
|
59
59
|
files: [
|
|
60
60
|
{
|
|
61
|
-
at: '
|
|
61
|
+
at: 'thread/integrity/slopnators/sl_probe_inert.ts',
|
|
62
62
|
source: 'export const slopnator = {\n on: [],\n holds: () => NOT_WRITTEN,\n proves: { wrong: [], right: [] },\n}\n',
|
|
63
63
|
},
|
|
64
64
|
],
|
|
65
|
-
at: '
|
|
65
|
+
at: 'thread/integrity/slopnators/sl_probe_inert.ts',
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
68
|
files: [
|
|
69
69
|
{
|
|
70
|
-
at: '
|
|
70
|
+
at: 'thread/integrity/slopnators/sl_probe_inert.ts',
|
|
71
71
|
source: "export const slopnator = {\n holds: (_node, at) => at.text.includes('nope') && 'found',\n proves: { wrong: [], right: ['const held = 1'] },\n}\n",
|
|
72
72
|
},
|
|
73
73
|
],
|
|
74
|
-
at: '
|
|
74
|
+
at: 'thread/integrity/slopnators/sl_probe_inert.ts',
|
|
75
75
|
},
|
|
76
76
|
],
|
|
77
77
|
right: [
|
|
78
78
|
{
|
|
79
79
|
files: [
|
|
80
80
|
{
|
|
81
|
-
at: '
|
|
81
|
+
at: 'thread/integrity/slopnators/sl_probe_inert.ts',
|
|
82
82
|
source: "export const slopnator = {\n holds: (_node, at) => at.text.includes('nope') && 'found',\n proves: { wrong: ['nope'], right: ['const held = 1'] },\n}\n",
|
|
83
83
|
},
|
|
84
84
|
],
|
|
85
|
-
at: '
|
|
85
|
+
at: 'thread/integrity/slopnators/sl_probe_inert.ts',
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
|
-
files: [{ at: '
|
|
89
|
-
at: '
|
|
88
|
+
files: [{ at: 'thread/integrity/slopnators/sl_probe_inert.ts', source: 'export const held = 1\n' }],
|
|
89
|
+
at: 'thread/integrity/slopnators/sl_probe_inert.ts',
|
|
90
90
|
},
|
|
91
91
|
],
|
|
92
92
|
},
|