skir 1.1.30 → 1.2.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/README.md +28 -22
- package/dist/snapshotter.js +32 -20
- package/dist/snapshotter.js.map +1 -1
- package/package.json +1 -1
- package/src/snapshotter.ts +31 -20
package/README.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
+
<img src="https://skir.build/octopus.svg" alt="Skir octopus logo" width="96" height="96" />
|
|
2
3
|
<h1>Skir</h1>
|
|
3
4
|
<p><strong>A modern alternative to Protocol Buffer</strong></p>
|
|
4
5
|
|
|
@@ -8,25 +9,30 @@
|
|
|
8
9
|
|
|
9
10
|
[](https://www.npmjs.com/package/skir)
|
|
10
11
|
[](https://github.com/gepheum/skir/actions)
|
|
11
|
-
|
|
12
|
-

|
|
13
12
|
</div>
|
|
14
13
|
|
|
15
14
|
<br />
|
|
16
15
|
|
|
17
|
-
**Skir** is a
|
|
16
|
+
**Skir** is a declarative language for defining data types, constants, and APIs.
|
|
17
|
+
Write your schema once in a `.skir` file and generate idiomatic, type-safe code in TypeScript, Python, Java, Go, C++, and more.
|
|
18
|
+
|
|
19
|
+
## 🎬 Quick demo
|
|
20
|
+
|
|
21
|
+
[](https://skir.build/greet.mp4)
|
|
18
22
|
|
|
19
23
|
## ✨ Features
|
|
20
24
|
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
25
|
+
- 🧩 **One schema, nine languages, zero friction** - One YAML config, one command, and watch mode that refreshes generated code on every change.
|
|
26
|
+
- 🛡️ **End-to-end type safety** - Shared method and type definitions keep client/server contracts aligned before runtime.
|
|
27
|
+
- ⚡ **SkirRPC + Studio** - Lightweight HTTP RPC with a built-in Studio app for browsing and testing methods.
|
|
28
|
+
- 📦 **GitHub imports** - Import types directly from GitHub repositories to share data structures across projects.
|
|
29
|
+
- 🔁 **Serialization modes** - Dense JSON for APIs/DBs, readable JSON for debugging, and binary for raw performance.
|
|
30
|
+
- 🕰️ **Safe schema evolution** - Built-in checks and clear rules so old and new data remain deserializable.
|
|
31
|
+
- 🧬 **Rust-like enums** - Variants can be constants or carry typed payloads for clean polymorphism.
|
|
32
|
+
- 🔒 **Immutable generated models** - Deep immutability (except C++) with required fields at construction time.
|
|
33
|
+
- 🗂️ **Key-indexed arrays** - Declare arrays like `[User|user_id]` and get fast key-based lookup APIs.
|
|
34
|
+
- 🛠️ **First-class tooling** - VS Code extension + LSP with validation, completion, and auto-formatting.
|
|
35
|
+
- 🧱 **Easy to extend** - Generators are regular NPM modules, so custom generators plug in cleanly.
|
|
30
36
|
|
|
31
37
|
## ⚡ Syntax example
|
|
32
38
|
|
|
@@ -77,7 +83,7 @@ assert(restored == point)
|
|
|
77
83
|
- [Language reference](https://skir.build/docs/language-reference)
|
|
78
84
|
- [Serialization](https://skir.build/docs/serialization)
|
|
79
85
|
- [Schema evolution](https://skir.build/docs/schema-evolution)
|
|
80
|
-
- [
|
|
86
|
+
- [SkirRPC](https://skir.build/docs/skirrpc)
|
|
81
87
|
- [External dependencies](https://skir.build/docs/dependencies)
|
|
82
88
|
- [Coming from Protocol Buffer](https://skir.build/docs/protobuf)
|
|
83
89
|
|
|
@@ -85,12 +91,12 @@ assert(restored == point)
|
|
|
85
91
|
|
|
86
92
|
| Language | Documentation | Example |
|
|
87
93
|
| :--- | :--- | :--- |
|
|
88
|
-
| 🟦 **TypeScript** | [Documentation](https://
|
|
89
|
-
| 🐍 **Python** | [Documentation](https://
|
|
90
|
-
| ⚡ **C++** | [Documentation](https://
|
|
91
|
-
| ☕ **Java** | [Documentation](https://
|
|
92
|
-
| 💜 **Kotlin** | [Documentation](https://
|
|
93
|
-
| 🦀 **Rust** | [Documentation](https://
|
|
94
|
-
| 🐹 **Go** | [Documentation](https://
|
|
95
|
-
| 🎯 **Dart** | [Documentation](https://
|
|
96
|
-
| 🐦 **Swift** | [Documentation](https://
|
|
94
|
+
| 🟦 **TypeScript** | [Documentation](https://skir.build/docs/typescript) | [Example](https://github.com/gepheum/skir-typescript-example) |
|
|
95
|
+
| 🐍 **Python** | [Documentation](https://skir.build/docs/python) | [Example](https://github.com/gepheum/skir-python-example) |
|
|
96
|
+
| ⚡ **C++** | [Documentation](https://skir.build/docs/cpp) | [Example](https://github.com/gepheum/skir-cc-example) |
|
|
97
|
+
| ☕ **Java** | [Documentation](https://skir.build/docs/java) | [Example](https://github.com/gepheum/skir-java-example) |
|
|
98
|
+
| 💜 **Kotlin** | [Documentation](https://skir.build/docs/kotlin) | [Example](https://github.com/gepheum/skir-kotlin-example) |
|
|
99
|
+
| 🦀 **Rust** | [Documentation](https://skir.build/docs/rust) | [Example](https://github.com/gepheum/skir-rust-example) |
|
|
100
|
+
| 🐹 **Go** | [Documentation](https://skir.build/docs/go) | [Example](https://github.com/gepheum/skir-go-example) |
|
|
101
|
+
| 🎯 **Dart** | [Documentation](https://skir.build/docs/dart) | [Example](https://github.com/gepheum/skir-dart-example) |
|
|
102
|
+
| 🐦 **Swift** | [Documentation](https://skir.build/docs/swift) | [Example](https://github.com/gepheum/skir-swift-example) |
|
package/dist/snapshotter.js
CHANGED
|
@@ -198,7 +198,6 @@ function sameModules(a, b) {
|
|
|
198
198
|
}));
|
|
199
199
|
}
|
|
200
200
|
function collectTrackedRecords(moduleSet) {
|
|
201
|
-
const seenRecordIds = new Set();
|
|
202
201
|
const trackedRecordIds = new Set();
|
|
203
202
|
const getRecordId = (record) => {
|
|
204
203
|
const qualifiedName = record.recordAncestors
|
|
@@ -206,25 +205,28 @@ function collectTrackedRecords(moduleSet) {
|
|
|
206
205
|
.join(".");
|
|
207
206
|
return `${record.modulePath}:${qualifiedName}`;
|
|
208
207
|
};
|
|
209
|
-
const
|
|
208
|
+
const trackType = (type) => {
|
|
210
209
|
switch (type.kind) {
|
|
211
210
|
case "array":
|
|
212
|
-
|
|
211
|
+
trackType(type.item);
|
|
212
|
+
break;
|
|
213
213
|
case "optional":
|
|
214
|
-
|
|
214
|
+
trackType(type.other);
|
|
215
|
+
break;
|
|
215
216
|
case "primitive":
|
|
216
|
-
|
|
217
|
-
case "record":
|
|
218
|
-
|
|
217
|
+
break;
|
|
218
|
+
case "record": {
|
|
219
|
+
const record = moduleSet.recordMap.get(type.key);
|
|
220
|
+
if (record) {
|
|
221
|
+
trackRecord(record);
|
|
222
|
+
}
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
219
225
|
}
|
|
220
226
|
};
|
|
221
|
-
const
|
|
227
|
+
const trackRecord = (record) => {
|
|
222
228
|
const recordId = getRecordId(record);
|
|
223
|
-
if (
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
seenRecordIds.add(recordId);
|
|
227
|
-
if (record.record.recordNumber === null) {
|
|
229
|
+
if (trackedRecordIds.has(recordId)) {
|
|
228
230
|
return;
|
|
229
231
|
}
|
|
230
232
|
trackedRecordIds.add(recordId);
|
|
@@ -232,17 +234,27 @@ function collectTrackedRecords(moduleSet) {
|
|
|
232
234
|
for (const field of record.record.fields) {
|
|
233
235
|
const fieldType = field.type;
|
|
234
236
|
if (fieldType) {
|
|
235
|
-
|
|
236
|
-
if (fieldRecord) {
|
|
237
|
-
processRecord(fieldRecord);
|
|
238
|
-
}
|
|
237
|
+
trackType(fieldType);
|
|
239
238
|
}
|
|
240
239
|
}
|
|
241
240
|
};
|
|
242
|
-
for (const
|
|
243
|
-
|
|
241
|
+
for (const module of moduleSet.modules.values()) {
|
|
242
|
+
// Skip external dependencies
|
|
243
|
+
if (module.result.path.startsWith("@"))
|
|
244
|
+
continue;
|
|
245
|
+
for (const record of module.result.records) {
|
|
246
|
+
if (record.record.recordNumber !== null) {
|
|
247
|
+
trackRecord(record);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
for (const method of module.result.methods) {
|
|
251
|
+
trackType(method.requestType);
|
|
252
|
+
trackType(method.responseType);
|
|
253
|
+
}
|
|
244
254
|
}
|
|
245
|
-
const untrackedRecordIds = new Set([...
|
|
255
|
+
const untrackedRecordIds = new Set([...moduleSet.recordMap.values()]
|
|
256
|
+
.map(getRecordId)
|
|
257
|
+
.filter((id) => !trackedRecordIds.has(id)));
|
|
246
258
|
return {
|
|
247
259
|
trackedRecordIds: trackedRecordIds,
|
|
248
260
|
untrackedRecordIds: untrackedRecordIds,
|
package/dist/snapshotter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshotter.js","sourceRoot":"","sources":["../src/snapshotter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EACL,WAAW,EACX,SAAS,EACT,OAAO,EACP,qBAAqB,EACrB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAKlC;IACC,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1E,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC/B,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,YAAY,YAAY,SAAS,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CACX,OAAO,CACL,4BAA4B,uBAAuB,CAAC,YAAY,CAAC,EAAE,CACpE,CACF,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,UAAU,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CACT,qFAAqF;YACnF,yHAAyH,CAC5H,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,eAAe,GAAG,kBAAkB,CAAC;QACzC,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;IACH,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;QAC3B,qBAAqB,CAAC,eAAe,EAAE;YACrC,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,YAAY;SACpB,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACpD,IAAI,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;SAAM,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAE7D,MAAM,kBAAkB,GAAG,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC;IAC/D,MAAM,oBAAoB,GAAG,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC;IACnE,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,IAAY,EAAU,EAAE;QACtD,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC7C,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CACT;QACE,WAAW,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;QACjD,IAAI;QACJ,WAAW,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;QACrD,yBAAyB;KAC1B,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;IAEpE,IAAI,kBAAkB,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CACT,+DAA+D,CAChE,CAAC;QACF,OAAO,CAAC,GAAG,CACT,4EAA4E,CAC7E,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAOD,KAAK,UAAU,gBAAgB,CAC7B,YAAoB;IAEpB,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,eAAe,GACnB,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;QACvE,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG,EAAkB,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,oBAAoB;YACpB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,8BAA8B,CAAC,WAAW,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,WAAmB;IAEnB,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,KAAK;aACb,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnD,IAAI,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAClE,6BAA6B;YAC7B,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACtD,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;QACrD,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,IAAI,KAAK,CAAC,mCAAmC,UAAU,EAAE,CAAC;SAClE,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAyB;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAC9D,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC1D,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,eAAe,GACnB,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;QACvE,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;aAAM,CAAC;YACN,oBAAoB;YACpB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;IAEvD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,SAAoB,EAAE,GAAS;IACnD,MAAM,OAAO,GAA+B,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACrD,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC;QACjD,CAAC;IACH,CAAC;IACD,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC1D,OAAO;QACL,MAAM,EAAE;YACN,gCAAgC;YAChC,EAAE;YACF,qDAAqD;YACrD,EAAE;YACF,iDAAiD;YACjD,qBAAqB;YACrB,EAAE;YACF,+DAA+D;YAC/D,2BAA2B;YAC3B,EAAE;YACF,gEAAgE;YAChE,iEAAiE;YACjE,6CAA6C;YAC7C,0BAA0B;SAC3B;QACD,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE;QAC7B,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE;QACtE,kBAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE;QAC1E,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,CAAW,EAAE,CAAW;IAC3C,OAAO,CACL,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM;QAC/D,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE;YACrD,OAAO,UAAU,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAeD,SAAS,qBAAqB,CAAC,SAAoB;IACjD,MAAM,
|
|
1
|
+
{"version":3,"file":"snapshotter.js","sourceRoot":"","sources":["../src/snapshotter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/snapshotter.ts
CHANGED
|
@@ -252,7 +252,6 @@ interface TrackedRecords {
|
|
|
252
252
|
}
|
|
253
253
|
|
|
254
254
|
function collectTrackedRecords(moduleSet: ModuleSet): TrackedRecords {
|
|
255
|
-
const seenRecordIds = new Set<string>();
|
|
256
255
|
const trackedRecordIds = new Set<string>();
|
|
257
256
|
|
|
258
257
|
const getRecordId = (record: RecordLocation): string => {
|
|
@@ -262,26 +261,29 @@ function collectTrackedRecords(moduleSet: ModuleSet): TrackedRecords {
|
|
|
262
261
|
return `${record.modulePath}:${qualifiedName}`;
|
|
263
262
|
};
|
|
264
263
|
|
|
265
|
-
const
|
|
264
|
+
const trackType = (type: ResolvedType): void => {
|
|
266
265
|
switch (type.kind) {
|
|
267
266
|
case "array":
|
|
268
|
-
|
|
267
|
+
trackType(type.item);
|
|
268
|
+
break;
|
|
269
269
|
case "optional":
|
|
270
|
-
|
|
270
|
+
trackType(type.other);
|
|
271
|
+
break;
|
|
271
272
|
case "primitive":
|
|
272
|
-
|
|
273
|
-
case "record":
|
|
274
|
-
|
|
273
|
+
break;
|
|
274
|
+
case "record": {
|
|
275
|
+
const record = moduleSet.recordMap.get(type.key);
|
|
276
|
+
if (record) {
|
|
277
|
+
trackRecord(record);
|
|
278
|
+
}
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
275
281
|
}
|
|
276
282
|
};
|
|
277
283
|
|
|
278
|
-
const
|
|
284
|
+
const trackRecord = (record: RecordLocation): void => {
|
|
279
285
|
const recordId = getRecordId(record);
|
|
280
|
-
if (
|
|
281
|
-
return;
|
|
282
|
-
}
|
|
283
|
-
seenRecordIds.add(recordId);
|
|
284
|
-
if (record.record.recordNumber === null) {
|
|
286
|
+
if (trackedRecordIds.has(recordId)) {
|
|
285
287
|
return;
|
|
286
288
|
}
|
|
287
289
|
trackedRecordIds.add(recordId);
|
|
@@ -289,19 +291,28 @@ function collectTrackedRecords(moduleSet: ModuleSet): TrackedRecords {
|
|
|
289
291
|
for (const field of record.record.fields) {
|
|
290
292
|
const fieldType = field.type;
|
|
291
293
|
if (fieldType) {
|
|
292
|
-
|
|
293
|
-
if (fieldRecord) {
|
|
294
|
-
processRecord(fieldRecord);
|
|
295
|
-
}
|
|
294
|
+
trackType(fieldType);
|
|
296
295
|
}
|
|
297
296
|
}
|
|
298
297
|
};
|
|
299
298
|
|
|
300
|
-
for (const
|
|
301
|
-
|
|
299
|
+
for (const module of moduleSet.modules.values()) {
|
|
300
|
+
// Skip external dependencies
|
|
301
|
+
if (module.result.path.startsWith("@")) continue;
|
|
302
|
+
for (const record of module.result.records) {
|
|
303
|
+
if (record.record.recordNumber !== null) {
|
|
304
|
+
trackRecord(record);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
for (const method of module.result.methods) {
|
|
308
|
+
trackType(method.requestType!);
|
|
309
|
+
trackType(method.responseType!);
|
|
310
|
+
}
|
|
302
311
|
}
|
|
303
312
|
const untrackedRecordIds = new Set(
|
|
304
|
-
[...
|
|
313
|
+
[...moduleSet.recordMap.values()]
|
|
314
|
+
.map(getRecordId)
|
|
315
|
+
.filter((id) => !trackedRecordIds.has(id)),
|
|
305
316
|
);
|
|
306
317
|
return {
|
|
307
318
|
trackedRecordIds: trackedRecordIds,
|