sn-module-gen 0.1.0__py3-none-any.whl

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 (94) hide show
  1. sn_module_gen-0.1.0.dist-info/METADATA +356 -0
  2. sn_module_gen-0.1.0.dist-info/RECORD +94 -0
  3. sn_module_gen-0.1.0.dist-info/WHEEL +5 -0
  4. sn_module_gen-0.1.0.dist-info/entry_points.txt +2 -0
  5. sn_module_gen-0.1.0.dist-info/licenses/LICENSE +21 -0
  6. sn_module_gen-0.1.0.dist-info/top_level.txt +1 -0
  7. supernote_module_generator/__init__.py +3 -0
  8. supernote_module_generator/arguments.py +339 -0
  9. supernote_module_generator/binding_codegen.py +4872 -0
  10. supernote_module_generator/cli.py +949 -0
  11. supernote_module_generator/cli_operations.py +1849 -0
  12. supernote_module_generator/conversion.py +931 -0
  13. supernote_module_generator/conversion_codegen.py +280 -0
  14. supernote_module_generator/cpp_class_syntax.py +140 -0
  15. supernote_module_generator/cpp_declarations.py +421 -0
  16. supernote_module_generator/cpp_function_syntax.py +312 -0
  17. supernote_module_generator/cpp_global_functions.py +85 -0
  18. supernote_module_generator/cpp_lexer.py +290 -0
  19. supernote_module_generator/cpp_member_semantics.py +113 -0
  20. supernote_module_generator/cpp_member_shapes.py +204 -0
  21. supernote_module_generator/cpp_members.py +129 -0
  22. supernote_module_generator/cpp_object_binding_codegen.py +1745 -0
  23. supernote_module_generator/cpp_object_runtime_codegen.py +286 -0
  24. supernote_module_generator/cpp_projection.py +781 -0
  25. supernote_module_generator/cpp_routes.py +501 -0
  26. supernote_module_generator/cpp_source_routing.py +83 -0
  27. supernote_module_generator/cpp_type_syntax.py +137 -0
  28. supernote_module_generator/cross_family_codegen.py +695 -0
  29. supernote_module_generator/devconfig.py +188 -0
  30. supernote_module_generator/diagnostics.py +159 -0
  31. supernote_module_generator/doctor.py +1835 -0
  32. supernote_module_generator/errors.py +115 -0
  33. supernote_module_generator/feature_cli_operations.py +1634 -0
  34. supernote_module_generator/feature_generator.py +364 -0
  35. supernote_module_generator/feature_identity.py +85 -0
  36. supernote_module_generator/feature_model.py +334 -0
  37. supernote_module_generator/feature_operations.py +475 -0
  38. supernote_module_generator/feature_workflows.py +544 -0
  39. supernote_module_generator/filesystem.py +3933 -0
  40. supernote_module_generator/filesystem_inventory.py +336 -0
  41. supernote_module_generator/frontend_discovery.py +104 -0
  42. supernote_module_generator/generation_execution.py +241 -0
  43. supernote_module_generator/generation_plan.py +688 -0
  44. supernote_module_generator/generation_service.py +921 -0
  45. supernote_module_generator/helptext.py +398 -0
  46. supernote_module_generator/integration.py +42 -0
  47. supernote_module_generator/integrity_manifest.py +858 -0
  48. supernote_module_generator/interaction.py +853 -0
  49. supernote_module_generator/internal_codegen.py +530 -0
  50. supernote_module_generator/jsi_binding_decisions.py +72 -0
  51. supernote_module_generator/jvm_codegen.py +2631 -0
  52. supernote_module_generator/jvm_manifest.py +608 -0
  53. supernote_module_generator/jvm_object_binding_codegen.py +2491 -0
  54. supernote_module_generator/jvm_object_runtime_codegen.py +226 -0
  55. supernote_module_generator/jvm_projection.py +615 -0
  56. supernote_module_generator/jvm_routes.py +537 -0
  57. supernote_module_generator/lowering.py +191 -0
  58. supernote_module_generator/models.py +358 -0
  59. supernote_module_generator/naming.py +205 -0
  60. supernote_module_generator/operation_lock.py +151 -0
  61. supernote_module_generator/platform_tools.py +58 -0
  62. supernote_module_generator/plugin_build_integration.py +714 -0
  63. supernote_module_generator/plugin_runtime_codegen.py +2472 -0
  64. supernote_module_generator/project.py +150 -0
  65. supernote_module_generator/project_model.py +537 -0
  66. supernote_module_generator/reachability.py +293 -0
  67. supernote_module_generator/readme_codegen.py +371 -0
  68. supernote_module_generator/rendering.py +698 -0
  69. supernote_module_generator/schemas/command-result.schema.json +261 -0
  70. supernote_module_generator/schemas.py +22 -0
  71. supernote_module_generator/semantic.py +1360 -0
  72. supernote_module_generator/semantic_ir.py +198 -0
  73. supernote_module_generator/semantic_types.py +260 -0
  74. supernote_module_generator/source_models.py +491 -0
  75. supernote_module_generator/subprocesses.py +180 -0
  76. supernote_module_generator/template_contract.py +824 -0
  77. supernote_module_generator/templates/runtime.SupernoteConstructor.java.tmpl +10 -0
  78. supernote_module_generator/templates/runtime.SupernoteCoroutineBridge.kt.tmpl +42 -0
  79. supernote_module_generator/templates/runtime.SupernoteModule.kt.tmpl +334 -0
  80. supernote_module_generator/templates/runtime.SupernoteModuleProcessor.kt.tmpl +1211 -0
  81. supernote_module_generator/templates/runtime.SupernotePluginAsync.java.tmpl +10 -0
  82. supernote_module_generator/templates/runtime.SupernotePluginExport.java.tmpl +15 -0
  83. supernote_module_generator/templates/runtime.SupernotePluginInternal.java.tmpl +10 -0
  84. supernote_module_generator/templates/runtime.SupernotePluginObject.java.tmpl +10 -0
  85. supernote_module_generator/templates/runtime.SupernotePluginValue.java.tmpl +10 -0
  86. supernote_module_generator/templates/runtime.processor.provider.tmpl +1 -0
  87. supernote_module_generator/templates.py +20 -0
  88. supernote_module_generator/terminal_text.py +110 -0
  89. supernote_module_generator/transaction.py +4233 -0
  90. supernote_module_generator/transaction_registry.py +275 -0
  91. supernote_module_generator/typescript_codegen.py +236 -0
  92. supernote_module_generator/validation.py +517 -0
  93. supernote_module_generator/verification.py +51 -0
  94. supernote_module_generator/windows_authority.py +519 -0
@@ -0,0 +1,356 @@
1
+ Metadata-Version: 2.4
2
+ Name: sn-module-gen
3
+ Version: 0.1.0
4
+ Summary: Generate typed C/C++ and Kotlin/Java features for existing Supernote plugins
5
+ Home-page: https://github.com/Ziv-Ink/supernote-module-generator
6
+ Author: Ziv-Ink
7
+ Author-email: einkatelier@gmail.com
8
+ License: MIT
9
+ Project-URL: Issues, https://github.com/Ziv-Ink/supernote-module-generator/issues
10
+ Project-URL: PyPI, https://pypi.org/project/sn-module-gen/
11
+ Project-URL: Source, https://github.com/Ziv-Ink/supernote-module-generator
12
+ Keywords: android,code-generator,jni,jsi,react-native,supernote
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Programming Language :: Python :: 3 :: Only
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: Software Development :: Code Generators
23
+ Requires-Python: >=3.9
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Provides-Extra: dev
27
+ Requires-Dist: build<2,>=1; extra == "dev"
28
+ Requires-Dist: coverage[toml]<8,>=7.6; extra == "dev"
29
+ Requires-Dist: jsonschema<5,>=4; extra == "dev"
30
+ Requires-Dist: mypy<2,>=1.11; extra == "dev"
31
+ Requires-Dist: pytest<9,>=8; extra == "dev"
32
+ Requires-Dist: ruff<1,>=0.9; extra == "dev"
33
+ Requires-Dist: setuptools>=58; extra == "dev"
34
+ Requires-Dist: twine<7,>=5; extra == "dev"
35
+ Requires-Dist: wheel; extra == "dev"
36
+ Dynamic: license-file
37
+
38
+ # Supernote Module Generator
39
+
40
+ Supernote Module Generator adds typed C/C++ and Kotlin/Java capabilities to an
41
+ existing Supernote plugin. It generates the JSI, JNI, Kotlin Symbol Processing,
42
+ TypeScript, build, and lifecycle code that connects those implementations to
43
+ JavaScript.
44
+
45
+ A feature can use C++, C helper files, Kotlin, and Java together while exposing
46
+ one JavaScript and TypeScript API. The generator connects everything through
47
+ JSI and builds one shared runtime component for the plugin.
48
+
49
+ Native objects keep a reference to the original C++, Kotlin, or Java instance.
50
+ Declared value objects are validated and copied across the bridge. The same
51
+ type system also supports arrays, nullable values, string enums, live object
52
+ fields, returned-only objects, explicit constructors, factories, and async
53
+ object retention.
54
+
55
+ ## Install
56
+
57
+ Python 3.9 or newer is required:
58
+
59
+ ```bash
60
+ python3 -m pip install sn-module-gen
61
+ ```
62
+
63
+ Package and command names:
64
+
65
+ ```text
66
+ Python distribution: sn-module-gen
67
+ CLI command: sn-module-gen
68
+ ```
69
+
70
+ Run the CLI from an existing Supernote plugin root.
71
+
72
+ ## Add a feature
73
+
74
+ Choose which starter source families to scaffold:
75
+
76
+ ```bash
77
+ sn-module-gen add document --starter cpp --yes
78
+ sn-module-gen add document --starter kotlin --yes
79
+ sn-module-gen add document --starter cpp --starter kotlin --yes
80
+ ```
81
+
82
+ The guided command shows the same choices as `C/C++ (native)` and
83
+ `Kotlin/Java (JVM)`. These options only choose which example files to create.
84
+ You can add either source family later.
85
+
86
+ The native root compiles C23 and C++23 source. Exported declarations are written
87
+ in C++23. C23 code can be used behind an ordinary C-compatible interface and a
88
+ small marked C++ boundary.
89
+
90
+ Common commands:
91
+
92
+ ```bash
93
+ sn-module-gen update document --yes
94
+ sn-module-gen validate document
95
+ sn-module-gen validate --all --build
96
+ sn-module-gen doctor
97
+ sn-module-gen remove document --yes
98
+ ```
99
+
100
+ The generator uses the plugin root's optional `devconfig.json` for plugin operations
101
+ and Doctor. `javaHome` selects Gradle's Java, `androidSdk` sets both SDK variables,
102
+ and `adb` is passed to children as `ADB_BIN`. A missing, `null`, malformed, or unusable
103
+ value warns and preserves the corresponding launch-environment value.
104
+
105
+ The overrides apply only while the command runs and do not change the parent shell
106
+ or `android/local.properties` on disk. Build and check paths are source-tree read-only.
107
+
108
+ Doctor reads the literal `compileSdkVersion`, `buildToolsVersion`, and `ndkVersion`;
109
+ it never substitutes another installed NDK. JSON distinguishes `configured`, `found`,
110
+ `selected`, `executable_probed`, `compiler_probed`, `project_built`, and
111
+ `device_tested`. Plain Doctor never infers a build or device test from file detection.
112
+ Use `sn-module-gen doctor --build` for the read-only Gradle/KSP/Kotlin/CMake/JNI/JSI
113
+ gate; `device_tested` stays false until a separate device canary.
114
+
115
+ Removal preserves plugin build output by default. To remove the three known
116
+ generated build directories as part of an explicit removal:
117
+
118
+ ```bash
119
+ sn-module-gen remove document --delete-build-files --yes
120
+ ```
121
+
122
+ That option targets only `build/`, `android/build/`, and
123
+ `android/app/build/`. `--yes` by itself never enables build-output deletion or
124
+ widens a single-feature target to all features.
125
+
126
+ ## Marking exports
127
+
128
+ The generator leaves ordinary source alone. It only processes declarations
129
+ with a Supernote marker.
130
+
131
+ In C++, markers are exact source comments:
132
+
133
+ <!-- sn-module-gen-release-example: readme-cpp android/src/main/cpp/feature.cpp -->
134
+ ```cpp
135
+ #include <cstddef>
136
+ #include <cstdint>
137
+ #include <vector>
138
+
139
+ // @SupernotePluginExport
140
+ std::int32_t pageCount() {
141
+ return 42;
142
+ }
143
+
144
+ // @SupernotePluginInternal
145
+ void rebuildIndex() {}
146
+
147
+ // @SupernotePluginExport
148
+ // @SupernotePluginAsync
149
+ std::vector<std::byte> loadPage(std::int32_t page) {
150
+ (void)page;
151
+ return {};
152
+ }
153
+
154
+ void ordinaryHelper() {} // ignored
155
+ ```
156
+
157
+ For Kotlin and Java, use the generated annotations with the same names:
158
+
159
+ <!-- sn-module-gen-release-example: readme-jvm android/src/main/java/com/example/readme_jvm/FeatureApi.kt -->
160
+ ```kotlin
161
+ package com.example.readme_jvm
162
+
163
+ import supernote.generated.annotations.SupernotePluginAsync
164
+ import supernote.generated.annotations.SupernotePluginExport
165
+ import supernote.generated.annotations.SupernotePluginInternal
166
+
167
+ @SupernotePluginExport
168
+ fun pageCount(): Int = 42
169
+
170
+ @SupernotePluginInternal
171
+ fun rebuildIndex() = Unit
172
+
173
+ @SupernotePluginExport
174
+ @SupernotePluginAsync
175
+ suspend fun loadPage(page: Int): ByteArray = TODO()
176
+ ```
177
+
178
+ `SupernotePluginInternal` generates typed cross-language routing without adding
179
+ the declaration to JavaScript or TypeScript. `SupernotePluginAsync` is always
180
+ explicit; Kotlin `suspend`, C++ future-like types, and blocking implementation
181
+ code do not change the public API on their own.
182
+
183
+ `SupernotePluginObject` declares reference semantics;
184
+ `SupernotePluginValue` declares copied structural semantics. Neither marker
185
+ publishes members or construction by itself. Every JavaScript-visible function,
186
+ method, field, and constructor requires its own explicit marker:
187
+
188
+ <!-- sn-module-gen-release-example: readme-cpp android/src/main/cpp/FeatureTypes.hpp -->
189
+ ```cpp
190
+ #pragma once
191
+
192
+ #include <memory>
193
+ #include <string>
194
+ #include <utility>
195
+ #include <vector>
196
+
197
+ // @SupernotePluginValue
198
+ struct Point {
199
+ // @SupernotePluginExport
200
+ double x;
201
+ // @SupernotePluginExport
202
+ double y;
203
+ };
204
+
205
+ // @SupernotePluginObject
206
+ class Stroke {
207
+ public:
208
+ // @SupernoteConstructor
209
+ explicit Stroke(std::vector<Point> points) : points_(std::move(points)) {}
210
+
211
+ // @SupernotePluginExport
212
+ bool intersects(const std::shared_ptr<Stroke> &other) const {
213
+ return other != nullptr;
214
+ }
215
+
216
+ // @SupernotePluginExport
217
+ std::shared_ptr<Stroke> transformed(Point offset) const {
218
+ (void)offset;
219
+ return std::make_shared<Stroke>(*this);
220
+ }
221
+
222
+ // @SupernotePluginExport
223
+ std::string label;
224
+
225
+ void resetInternalCache(); // ignored
226
+
227
+ private:
228
+ std::vector<Point> points_;
229
+ };
230
+ ```
231
+
232
+ JavaScript receives stable runtime-local identity: if the same live native
233
+ instance is exposed again in one active runtime generation, the same JavaScript
234
+ object is returned. C++ objects use generated shared ownership; JVM objects use
235
+ managed global references and `IsSameObject`. Returned-only objects omit a
236
+ constructor but retain the same methods, argument/result behavior, lifetime,
237
+ and identity. Marked native-object fields are live properties; source
238
+ mutability determines whether they are writable.
239
+
240
+ Kotlin data classes and supported Java records or final classes can declare
241
+ copied values. Kotlin and Java object classes use `@SupernotePluginObject`, and
242
+ constructors exposed to JavaScript use `@SupernoteConstructor`. A marked static
243
+ or top-level function can also return an object; there is no separate factory
244
+ annotation.
245
+
246
+ ## Supported types and copied values
247
+
248
+ The generator supports these JavaScript and TypeScript mappings:
249
+
250
+ | Supernote value | JavaScript/TypeScript |
251
+ | --- | --- |
252
+ | `void` | `void` |
253
+ | `bool` | `boolean` |
254
+ | `int32` | `number` |
255
+ | `int64` | `bigint` |
256
+ | `float32`, `float64` | `number` |
257
+ | `string` | `string` |
258
+ | `bytes` | `Uint8Array` |
259
+ | string enum | string-literal union |
260
+ | declared value object | typed plain object |
261
+ | native reference object | nominally branded generated interface |
262
+ | homogeneous array of `T` | `T[]` |
263
+ | nullable `T` | `T \| null` |
264
+
265
+ Strings use UTF-8 when crossing native/JNI boundaries. Byte values use
266
+ copy-based snapshot semantics and pass only the visible `Uint8Array` view.
267
+ Declared value fields are required and strictly validated. Extra JavaScript
268
+ fields are ignored without being read. Values and array containers are copied;
269
+ native-object leaves retain references and identity. Arrays must be dense and
270
+ homogeneous. `null` is accepted only where declared, while omitted values and
271
+ `undefined` remain invalid.
272
+
273
+ The generated boundary does not accept arbitrary JavaScript objects,
274
+ dynamic/JSON trees, callbacks, maps, sets, tuples, general unions, recursive
275
+ value objects, raw pointers, numeric native handles, unsigned or
276
+ platform-dependent C++ integer types, or unmarked structural lookalikes.
277
+
278
+ ## Language-family routing
279
+
280
+ The public API does not expose implementation-language details. C++ native
281
+ objects can be passed to C++ routes, while Kotlin and Java objects can be passed
282
+ within the JVM family. Copied values may cross generated C++/JVM internal routes
283
+ when both sides declare the same schema.
284
+
285
+ Cross-language native-object proxies are not generated yet. Passing a C++
286
+ object to a JVM route, or a JVM object to a C++ route, produces a source-located
287
+ generation error. Public TypeScript types remain independent of the
288
+ implementation language.
289
+
290
+ ## Async, errors, and lifetime
291
+
292
+ An accepted async call immediately returns a normal `Promise<T>`. Ordinary
293
+ blocking implementations use the plugin's shared bounded worker executor;
294
+ supported Kotlin `suspend` implementations use the generated coroutine adapter.
295
+ Both routes share the same cancellation, teardown, error, and completion rules.
296
+
297
+ Argument count/type/integer/range misuse throws `TypeError` or `RangeError`
298
+ before an operation is accepted. Later failures reject with the exported
299
+ `SupernoteError`, whose stable string `code` includes
300
+ `RESOURCE_EXHAUSTED`, `CANCELLED`, `FEATURE_CLOSED`,
301
+ `IMPLEMENTATION_ERROR`, and `INTERNAL`.
302
+
303
+ Accepted async object methods retain their implementation receiver until
304
+ physical work can no longer access it. Generated code prevents use-after-free
305
+ but does not add a mutex or serial queue around user object state; plugin
306
+ implementations remain responsible for their own thread safety.
307
+
308
+ Generated code destroys C++ receivers and resources away from the JavaScript
309
+ thread. Cleanup may run on different threads and must not access JSI. If a
310
+ resource must be released on a particular thread, the plugin must arrange that
311
+ itself. The generated runtime releases JNI global references; the JVM decides
312
+ when the underlying objects are collected.
313
+
314
+ ## Validation
315
+
316
+ The integrity manifest records the required official-template capability. Compare the
317
+ surrounding plugin's Bash and PowerShell launch scripts without writing anything:
318
+
319
+ ```bash
320
+ sn-module-gen template status
321
+ ```
322
+
323
+ Preview or explicitly apply the recognized capability update:
324
+
325
+ ```bash
326
+ sn-module-gen template sync --dry-run
327
+ sn-module-gen template sync --yes
328
+ ```
329
+
330
+ Sync is transactional and refuses missing files, unsafe entry kinds, or unrecognized
331
+ script content. A synchronized launch still reports runtime success as unverified
332
+ unless it observes a plugin-correlated marker.
333
+
334
+ `sn-module-gen validate` checks generated structure by default; `--build` also
335
+ invokes Android. A local build proves generation and compilation for that environment,
336
+ not that a particular Supernote firmware, PluginHost, linker namespace, or SELinux
337
+ policy will execute the code. Validate target-device behavior on the intended device.
338
+
339
+ PluginHost can load up to 32 native generations for one plugin component in the
340
+ same process. Restart PluginHost before installing another changed native
341
+ generation after reaching that limit.
342
+
343
+ The generator does not create the surrounding Supernote plugin. Plugin creation,
344
+ installation, and device debugging are covered by the
345
+ [official Supernote plugin documentation](https://docs.supernote.com/).
346
+
347
+ ## Contributing
348
+
349
+ See [CONTRIBUTING.md](https://github.com/Ziv-Ink/supernote-module-generator/blob/main/CONTRIBUTING.md)
350
+ for development and validation rules and
351
+ [Architecture](https://github.com/Ziv-Ink/supernote-module-generator/blob/main/docs/ARCHITECTURE.md)
352
+ for the runtime and type model.
353
+
354
+ ## License
355
+
356
+ MIT. See [LICENSE](https://github.com/Ziv-Ink/supernote-module-generator/blob/main/LICENSE).
@@ -0,0 +1,94 @@
1
+ sn_module_gen-0.1.0.dist-info/licenses/LICENSE,sha256=TvrAqXBwM296Asz8g6qzZxGBK2-v6N0DNw0wjHh2cXs,1096
2
+ supernote_module_generator/__init__.py,sha256=LMsyRanDnC9WonLoRFErETWcVn8WX13ToVBNRSFHXsk,109
3
+ supernote_module_generator/arguments.py,sha256=I5djZaaBty7MTbulUzSUn5o0QKqxXRBgn_Mzy6Pt_uI,11371
4
+ supernote_module_generator/binding_codegen.py,sha256=S6_wZCip1sHho_XA_0bArr6dx-0lLAPJqt6FQcNm2vo,165517
5
+ supernote_module_generator/cli.py,sha256=1yCXMvx4VZWAiCPmyfvBSOyA0wKvgOMsgshIxjjhppM,34939
6
+ supernote_module_generator/cli_operations.py,sha256=WzpoM7M3zEB1D28O8D-YzH2YYVI9AtR-P06AQTr_qSc,75283
7
+ supernote_module_generator/conversion.py,sha256=ljxs8n4RRFhnXl4KA1juWdgv-9-NRBYnXiTW2r1j2IU,32227
8
+ supernote_module_generator/conversion_codegen.py,sha256=HiP9Q2HscoaZ6iPv7Hpg_ZhUBT-tRxcFPGBeae_2zEA,9146
9
+ supernote_module_generator/cpp_class_syntax.py,sha256=wfoDSZpXinfZ4BdvRRzxSqO-Zt5lyecuni4wDqJUwXU,3991
10
+ supernote_module_generator/cpp_declarations.py,sha256=VawKokAG-CxpwxNUH3agea-I6RB8-i4dxqmr5tCz_Ek,13369
11
+ supernote_module_generator/cpp_function_syntax.py,sha256=0zTDkR9pzPHW_kdoLijlhJT0a1pAWV25Et3VF5QKfnw,10177
12
+ supernote_module_generator/cpp_global_functions.py,sha256=HWm16TWaSDZn5j7Z4WZX2OOiw7Eb2dsK1CYwcZ7w2Tw,2603
13
+ supernote_module_generator/cpp_lexer.py,sha256=uVp2bv1PTfQmls3YlMhQUb0ZVo52aa5RmrHrDLhIi60,8704
14
+ supernote_module_generator/cpp_member_semantics.py,sha256=edfU_-ziH4-lvRFRFbvkmi_IuOjbezSE_g_TspAaLxY,3808
15
+ supernote_module_generator/cpp_member_shapes.py,sha256=3PS1zSrZo_KtTfJ7UMW0d2jXeP5HY8hR1Z-bJaassKo,6365
16
+ supernote_module_generator/cpp_members.py,sha256=6kJ2NoJBDdNWEeUxwvF70g2Dmz7sWUIZSUV706NrC1s,4287
17
+ supernote_module_generator/cpp_object_binding_codegen.py,sha256=hhXcHu7HhWa8d14LbRXz5uwp4R-ny_uKosC6ZZ2gJ1M,78359
18
+ supernote_module_generator/cpp_object_runtime_codegen.py,sha256=xVasD2HeoVgebkT1otM6cOFJlDWs-md4iCHZVrsaK5I,8987
19
+ supernote_module_generator/cpp_projection.py,sha256=VpZOimy7xqvZqLDfDMtB6sS4n_RnsSBag9tIHu2UNFQ,26076
20
+ supernote_module_generator/cpp_routes.py,sha256=Hjz_hAvw4Hp-Ilwcv0R0Lj_q7LxPlqZwYf-gD4LDQ8Y,16509
21
+ supernote_module_generator/cpp_source_routing.py,sha256=0XIZfdCgjTL32aHVbCvQwvmW9c0pVs881eapLtMkkpM,2651
22
+ supernote_module_generator/cpp_type_syntax.py,sha256=1He0fW55sEmlqNNEaPELWUk09v3G2ghN-DwSh47c6xU,4319
23
+ supernote_module_generator/cross_family_codegen.py,sha256=uahrhhRszoIIMvGdNq7kjGJQDlXpcg37yAMTk8yAI4U,34331
24
+ supernote_module_generator/devconfig.py,sha256=dDY_UIrfjGu57rm1pBgryyT7c445aliw51RWZ-evz4E,6570
25
+ supernote_module_generator/diagnostics.py,sha256=eHL_amOyHpfthS48cNz0yrmKnfxlNeukrq3mrkulyRc,5110
26
+ supernote_module_generator/doctor.py,sha256=GOl4rbJYlshgQvCD46t1u2CnxM_4jYinQcI2TJDP0k0,69444
27
+ supernote_module_generator/errors.py,sha256=8NQCaS8HwGyRBg5Oqyu-8fn-P3fbuR4ddwMmQ2MCZWk,2911
28
+ supernote_module_generator/feature_cli_operations.py,sha256=P1Cg3yJ6_gvmkqQjxnyhc9dXWzTN_cetorWrAK6L2gI,65617
29
+ supernote_module_generator/feature_generator.py,sha256=ryf2L-Cog6yNedKJRQggPbxDuUOGaQSp_xTUOyEqTnk,14845
30
+ supernote_module_generator/feature_identity.py,sha256=B9Ssh3bHs4HgKMELVAGvL2nOY-rfPIod0B7rmaz8vdw,2800
31
+ supernote_module_generator/feature_model.py,sha256=D0vKHYtULO28xB8yBQf4UWbApPG8PJoufTiLyWTSRv8,11443
32
+ supernote_module_generator/feature_operations.py,sha256=kS3GLPqX6MKnznskLwlfP17A3XI_bhuMEfSc2-ihKA8,17873
33
+ supernote_module_generator/feature_workflows.py,sha256=nHqeDYM6q6S5_7lWajPolWStwmAvauoSJ6oYpE6Sw44,21917
34
+ supernote_module_generator/filesystem.py,sha256=qZ0YDFGKxb3v7rVpcTGulkbqerF_lPdn1IgqXE6nFXA,135049
35
+ supernote_module_generator/filesystem_inventory.py,sha256=Nt_bngDiZtLNiaJ9dgLWULsPNgNTUfShDDahKPfWZQ4,10264
36
+ supernote_module_generator/frontend_discovery.py,sha256=ssuJnekdCLilpfK21g2iK9unOwLvy5XM_eSPfBGap-w,3896
37
+ supernote_module_generator/generation_execution.py,sha256=qiGjlUZKapqYwGd6gxtjCAngeqaSugwaJKMP1swrv9o,8615
38
+ supernote_module_generator/generation_plan.py,sha256=zPgcHC6Qhei7WU9UdIbkbb5sEpROTRZsqZ9s7wkicFc,24269
39
+ supernote_module_generator/generation_service.py,sha256=JJq2kxbVYJ1Bc6FK-LmSsht8UmDq7PejwuAFVGOjyLM,35678
40
+ supernote_module_generator/helptext.py,sha256=usVDb7Z7atbiDjHyuXo6ohy1jJRf96AXxYWTJ0LTSRs,14348
41
+ supernote_module_generator/integration.py,sha256=dFjxRT_3IsiGcS64-3CIDIMWOAUOStOhT_9ZkHSj9ss,1592
42
+ supernote_module_generator/integrity_manifest.py,sha256=M1kWtnlUlOtpRAW6U7h_q5iKtK5PVU1ssXhoejxCJjA,30617
43
+ supernote_module_generator/interaction.py,sha256=9Knk0jRfu36vinxDwnB4cCPAEEmsCbmMYcs7eMBaYiA,32864
44
+ supernote_module_generator/internal_codegen.py,sha256=4Is2VZ54wpFZEfkyf5d7mh4ZVG7M0smqkVPnwbHqCXE,17772
45
+ supernote_module_generator/jsi_binding_decisions.py,sha256=9hh2wWGAPoKU55iW_WT5-2wrvwCJushUIRrsO4A5Pxc,1959
46
+ supernote_module_generator/jvm_codegen.py,sha256=1XUIojGhYc3Fdddx6oada7GUS8GvnCmoBD9Bxohd05o,102403
47
+ supernote_module_generator/jvm_manifest.py,sha256=hoL4KtvahXRjQylipCg0IbJGSjqKTj4e8fgk8znWaeU,23706
48
+ supernote_module_generator/jvm_object_binding_codegen.py,sha256=lwRbFuZkDx2HdgLAD7Yis6VqX2uIgrzi6QBAIVRE8dM,109421
49
+ supernote_module_generator/jvm_object_runtime_codegen.py,sha256=wGEN6PndbdLK20-lMufC_r_-ZCvgw-By2BzetZ3gels,7867
50
+ supernote_module_generator/jvm_projection.py,sha256=liReyyPlhi-HPAW-wcHb0dRcFo7yO0lDR7bG7lBOZn0,22332
51
+ supernote_module_generator/jvm_routes.py,sha256=faocaYGk-yUTGFdoF8hqBlXKRfRpboj9czLdGPPbWo4,18168
52
+ supernote_module_generator/lowering.py,sha256=6646mLXfcPjeYcsJUraaf4iyrlt0y4xnfeSPWNs35aE,7623
53
+ supernote_module_generator/models.py,sha256=hLCfAzKqzokTuWhKmakK0d5ZLDcPwviTH0h-8yGpfhg,11328
54
+ supernote_module_generator/naming.py,sha256=PlQ9AmDvCgogNmSRmMwUn9dy8zEIKfnt-UX-fYxzhXc,8065
55
+ supernote_module_generator/operation_lock.py,sha256=eaFJzNjnf4qqVHKvS680E2mTf98AgP_2sFLb9z9xzrA,4570
56
+ supernote_module_generator/platform_tools.py,sha256=brppI1kYhjx7jcI1zzkl2sBKb04mnQEC0iwsO020WmQ,1788
57
+ supernote_module_generator/plugin_build_integration.py,sha256=PeoQnpMFc0gvVJeu6iww73Msu0djRQtteaY2TpXV5I0,23622
58
+ supernote_module_generator/plugin_runtime_codegen.py,sha256=KTKxP6mZeOHsOATEb9xQxdiI5hvKy_WwAzioOl4X1e8,84137
59
+ supernote_module_generator/project.py,sha256=DiNHQFCbNeb98Nzoc3UHbZO_dw4DI2hpKSMn2EQdwb8,4801
60
+ supernote_module_generator/project_model.py,sha256=MnZV9u56h8t3M6C8oQes3C9OpjxTeU-WDH_0tBKXSKE,20659
61
+ supernote_module_generator/reachability.py,sha256=XtH8RTZrIx-Fu9cIF_Z5YhvZZqG_A6FBVnjVYbyhn1Y,11523
62
+ supernote_module_generator/readme_codegen.py,sha256=bekCqzlun4Ou98SjCCT6tJb82zhCn_HscoFi1wckvmM,12520
63
+ supernote_module_generator/rendering.py,sha256=ibqwIfF_u6vNdH0k2hIKg_TwfHexmUprTObQNTkyn_k,26391
64
+ supernote_module_generator/schemas.py,sha256=D37ndNouK_O98EOJEepDvAT0sH7QaP28GbK1avcaU1Y,824
65
+ supernote_module_generator/semantic.py,sha256=Se6CYvVsPb-rAltjTTVpRzKeRUeEC3pgNjGIMALTYBQ,51280
66
+ supernote_module_generator/semantic_ir.py,sha256=B8YJk-_vUkpaa8rLwxOX6wsrNgGc26vPX5InTKy7JTY,7368
67
+ supernote_module_generator/semantic_types.py,sha256=elyOB0S0Pn98ge3VLKD4UfJ1-wBROYVJysXv0HaQOZw,9220
68
+ supernote_module_generator/source_models.py,sha256=cEwexHQs5rYZdmDfGIExx6l9jcsstPVRzaUNAqCFNmU,16971
69
+ supernote_module_generator/subprocesses.py,sha256=ZAukQnUCHSy5u9vGDV0YrCGMtT_7CmVnaFCb7oGAn5w,5579
70
+ supernote_module_generator/template_contract.py,sha256=d7NpgGbs-wLg-YW1LYsOu-wwQ3DDGDcShOsD5G5QU5Q,30305
71
+ supernote_module_generator/templates.py,sha256=HTpwG3LELQhgc7veHE6i5ACtVKV5IRUeu0CGhcabXhw,740
72
+ supernote_module_generator/terminal_text.py,sha256=4DezgH73wszRut91ACMttwpvCEFMsLNX4s48bCrKOOc,3140
73
+ supernote_module_generator/transaction.py,sha256=Csv11FRv4bScBRQup9seIrAjSAGi-S2_INHzaTWPphs,162647
74
+ supernote_module_generator/transaction_registry.py,sha256=LeOkA9_HkXkd1TTEJD8cfR8JtWwYZgtGJyugOCDLdLY,8730
75
+ supernote_module_generator/typescript_codegen.py,sha256=pU_ajCdCHOJDhLKVn2wbMWuJIUYrk8-zNJPH85Qk9eA,9322
76
+ supernote_module_generator/validation.py,sha256=S9oEWKMEfhCLXNh3oa2SskSpC_t3wmZ1A-A1n1z29as,19416
77
+ supernote_module_generator/verification.py,sha256=XsjsifP6dwuCGi6EUH1QWB-9aMkCiS3Z0gwSWXXleuc,1625
78
+ supernote_module_generator/windows_authority.py,sha256=PLKwDGjL9whCHMjjtdlKeJ_9fXCA4I7Bz3P__4YaQiI,17927
79
+ supernote_module_generator/schemas/command-result.schema.json,sha256=6addX0l_VfIwSixHrweeOi-FV1woE8pQps09vdAAnRg,7919
80
+ supernote_module_generator/templates/runtime.SupernoteConstructor.java.tmpl,sha256=h4xy3P_s10oP74Xz_be4D4SJb9mV-uz7gg8S9dtxdPM,314
81
+ supernote_module_generator/templates/runtime.SupernoteCoroutineBridge.kt.tmpl,sha256=CJGtMUQsZIG8izIG6WowUdRlY4wUWVB4V3FLSGlSH9c,1152
82
+ supernote_module_generator/templates/runtime.SupernoteModule.kt.tmpl,sha256=G75wYFDXWjBYiATnnWbq66_PfkCo40Z6-gP2yma1QII,12737
83
+ supernote_module_generator/templates/runtime.SupernoteModuleProcessor.kt.tmpl,sha256=w3JMwJ8memH6yHvyB1oAUuhK4P75OaqEDyIkePopWGo,57020
84
+ supernote_module_generator/templates/runtime.SupernotePluginAsync.java.tmpl,sha256=07UrHStW3wIpb3D5lIcz6btwSMX-bT9EgoRUi8Nil9A,309
85
+ supernote_module_generator/templates/runtime.SupernotePluginExport.java.tmpl,sha256=-kDRik7u1cIdP15_DF3t5xWlw1QEkinIVkvK9oPjlaU,402
86
+ supernote_module_generator/templates/runtime.SupernotePluginInternal.java.tmpl,sha256=YTMvoiwKr-CzN9RLthuAsiA_MafzksxgsFJL74vJDGI,312
87
+ supernote_module_generator/templates/runtime.SupernotePluginObject.java.tmpl,sha256=zy4pHMLACJI3iys2IEJKqDTx-qTHmEvwWYy_R4bnWUw,308
88
+ supernote_module_generator/templates/runtime.SupernotePluginValue.java.tmpl,sha256=wOWt3PSYx_GnkLRdNvAF3ZoYl39eWxEuNYxfNiPJBJY,307
89
+ supernote_module_generator/templates/runtime.processor.provider.tmpl,sha256=hSowiChuvyqTQTcb0XRQPiEq2TjNc1w0lDQGgy46HNY,63
90
+ sn_module_gen-0.1.0.dist-info/METADATA,sha256=RJKfN1rG8bKRR61uBQ3n8s9TKp4CznokygiRQAYgYqY,13243
91
+ sn_module_gen-0.1.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
92
+ sn_module_gen-0.1.0.dist-info/entry_points.txt,sha256=ISFBnjs9hv26NRtJAcArSJnz4kP48eShem88_3woIKs,70
93
+ sn_module_gen-0.1.0.dist-info/top_level.txt,sha256=LSO-ujzTAC_V22F-6ML4Q6MI2Xnk-48m-NbO-g2HB2k,27
94
+ sn_module_gen-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ sn-module-gen = supernote_module_generator.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Supernote Module Generator contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ supernote_module_generator
@@ -0,0 +1,3 @@
1
+ """Safe generator for local native code modules in Supernote React Native plugins."""
2
+
3
+ __version__ = "0.1.0"