titanpl 7.0.0 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/package.json +1 -1
  2. package/packages/cli/package.json +4 -4
  3. package/packages/cli/src/commands/build-ext.js +17 -4
  4. package/packages/engine-darwin-arm64/package.json +1 -1
  5. package/packages/engine-linux-x64/package.json +1 -1
  6. package/packages/engine-win32-x64/bin/titan-server.exe +0 -0
  7. package/packages/engine-win32-x64/package.json +1 -1
  8. package/packages/native/index.d.ts +27 -0
  9. package/packages/native/index.js +1 -0
  10. package/packages/native/package.json +1 -1
  11. package/packages/native/t.native.d.ts +99 -3
  12. package/packages/packet/package.json +1 -1
  13. package/packages/route/package.json +1 -1
  14. package/packages/sdk/package.json +1 -1
  15. package/templates/extension/README_WASM.md +38 -0
  16. package/templates/extension/package.json +2 -2
  17. package/templates/js/package.json +7 -7
  18. package/templates/rust-js/package.json +4 -4
  19. package/templates/rust-ts/package.json +4 -4
  20. package/templates/ts/package.json +7 -7
  21. package/packages/core-source/LICENSE +0 -15
  22. package/packages/core-source/README.md +0 -128
  23. package/packages/core-source/V8_SERIALIZATION.md +0 -125
  24. package/packages/core-source/configure.js +0 -50
  25. package/packages/core-source/globals.d.ts +0 -2238
  26. package/packages/core-source/index.d.ts +0 -515
  27. package/packages/core-source/index.js +0 -639
  28. package/packages/core-source/jsconfig.json +0 -12
  29. package/packages/core-source/mkctx.config.json +0 -7
  30. package/packages/core-source/native/Cargo.lock +0 -1559
  31. package/packages/core-source/native/Cargo.toml +0 -30
  32. package/packages/core-source/native/src/crypto_impl.rs +0 -139
  33. package/packages/core-source/native/src/lib.rs +0 -702
  34. package/packages/core-source/native/src/storage_impl.rs +0 -73
  35. package/packages/core-source/native/src/v8_impl.rs +0 -93
  36. package/packages/core-source/package-lock.json +0 -1464
  37. package/packages/core-source/package.json +0 -53
  38. package/packages/core-source/tests/buffer.test.js +0 -78
  39. package/packages/core-source/tests/cookies.test.js +0 -117
  40. package/packages/core-source/tests/crypto.test.js +0 -142
  41. package/packages/core-source/tests/fs.test.js +0 -176
  42. package/packages/core-source/tests/ls.test.js +0 -149
  43. package/packages/core-source/tests/net.test.js +0 -84
  44. package/packages/core-source/tests/os.test.js +0 -81
  45. package/packages/core-source/tests/path.test.js +0 -102
  46. package/packages/core-source/tests/response.test.js +0 -146
  47. package/packages/core-source/tests/session.test.js +0 -110
  48. package/packages/core-source/tests/setup.js +0 -325
  49. package/packages/core-source/tests/time.test.js +0 -57
  50. package/packages/core-source/tests/url.test.js +0 -82
  51. package/packages/core-source/titan-ext.d.ts +0 -2
  52. package/packages/core-source/titan.json +0 -9
  53. package/packages/core-source/vitest.config.js +0 -8
  54. package/templates/extension/README.md +0 -69
@@ -1,73 +0,0 @@
1
- use std::collections::HashMap;
2
- use std::sync::{OnceLock, RwLock};
3
-
4
-
5
- static STORAGE: OnceLock<RwLock<HashMap<String, String>>> = OnceLock::new();
6
- static SESSIONS: OnceLock<RwLock<HashMap<String, String>>> = OnceLock::new();
7
-
8
- fn get_storage() -> &'static RwLock<HashMap<String, String>> {
9
- STORAGE.get_or_init(|| RwLock::new(HashMap::new()))
10
- }
11
-
12
- fn get_sessions() -> &'static RwLock<HashMap<String, String>> {
13
- SESSIONS.get_or_init(|| RwLock::new(HashMap::new()))
14
- }
15
-
16
- // --- Local Storage ---
17
-
18
- pub fn ls_get(key: &str) -> Option<String> {
19
- let map = get_storage().read().ok()?;
20
- map.get(key).cloned()
21
- }
22
-
23
- pub fn ls_set(key: &str, value: &str) -> Result<(), String> {
24
- let mut map = get_storage().write().map_err(|_| "Storage write lock poisoned".to_string())?;
25
- map.insert(key.to_string(), value.to_string());
26
- Ok(())
27
- }
28
-
29
- pub fn ls_remove(key: &str) -> Result<(), String> {
30
- let mut map = get_storage().write().map_err(|_| "Storage write lock poisoned".to_string())?;
31
- map.remove(key);
32
- Ok(())
33
- }
34
-
35
- pub fn ls_clear() -> Result<(), String> {
36
- let mut map = get_storage().write().map_err(|_| "Storage write lock poisoned".to_string())?;
37
- map.clear();
38
- Ok(())
39
- }
40
-
41
- pub fn ls_keys() -> Result<Vec<String>, String> {
42
- let map = get_storage().read().map_err(|_| "Storage read lock poisoned".to_string())?;
43
- Ok(map.keys().cloned().collect())
44
- }
45
-
46
- // --- Sessions ---
47
-
48
- pub fn session_set(session_id: &str, key: &str, value: &str) -> Result<(), String> {
49
- let mut map = get_sessions().write().map_err(|_| "Session write lock poisoned".to_string())?;
50
- let comp_key = format!("{}:{}", session_id, key);
51
- map.insert(comp_key, value.to_string());
52
- Ok(())
53
- }
54
-
55
- pub fn session_get(session_id: &str, key: &str) -> Option<String> {
56
- let map = get_sessions().read().ok()?;
57
- let comp_key = format!("{}:{}", session_id, key);
58
- map.get(&comp_key).cloned()
59
- }
60
-
61
- pub fn session_delete(session_id: &str, key: &str) -> Result<(), String> {
62
- let mut map = get_sessions().write().map_err(|_| "Session write lock poisoned".to_string())?;
63
- let comp_key = format!("{}:{}", session_id, key);
64
- map.remove(&comp_key);
65
- Ok(())
66
- }
67
-
68
- pub fn session_clear(session_id: &str) -> Result<(), String> {
69
- let mut map = get_sessions().write().map_err(|_| "Session write lock poisoned".to_string())?;
70
- let prefix = format!("{}:", session_id);
71
- map.retain(|k, _| !k.starts_with(&prefix));
72
- Ok(())
73
- }
@@ -1,93 +0,0 @@
1
- use v8;
2
- use v8::ValueSerializerHelper;
3
- use v8::ValueDeserializerHelper;
4
-
5
- struct TitanValueSerializerDelegate;
6
- impl v8::ValueSerializerImpl for TitanValueSerializerDelegate {
7
- fn throw_data_clone_error<'s>(
8
- &self,
9
- scope: &mut v8::HandleScope<'s>,
10
- message: v8::Local<'s, v8::String>,
11
- ) {
12
- let error = v8::Exception::error(scope, message);
13
- scope.throw_exception(error);
14
- }
15
- }
16
-
17
- struct TitanValueDeserializerDelegate;
18
- impl v8::ValueDeserializerImpl for TitanValueDeserializerDelegate {}
19
-
20
- pub fn native_serialize(
21
- scope: &mut v8::HandleScope,
22
- args: v8::FunctionCallbackArguments,
23
- mut retval: v8::ReturnValue,
24
- ) {
25
- let value = args.get(0);
26
- let context = scope.get_current_context();
27
-
28
- // Create serializer with delegate
29
- let mut serializer = v8::ValueSerializer::new(scope, Box::new(TitanValueSerializerDelegate));
30
- serializer.write_header();
31
-
32
- // Serialize
33
- match serializer.write_value(context, value) {
34
- Some(true) => {
35
- let raw_bytes = serializer.release();
36
-
37
- // Generate Uint8Array
38
- let len = raw_bytes.len();
39
- let unique_bs = v8::ArrayBuffer::new_backing_store_from_boxed_slice(raw_bytes.into_boxed_slice());
40
- let shared_bs = unique_bs.make_shared();
41
- let array_buffer = v8::ArrayBuffer::with_backing_store(scope, &shared_bs);
42
-
43
- if let Some(uint8) = v8::Uint8Array::new(scope, array_buffer, 0, len) {
44
- retval.set(uint8.into());
45
- }
46
- },
47
- _ => {}
48
- }
49
- }
50
-
51
- pub fn native_deserialize(
52
- scope: &mut v8::HandleScope,
53
- args: v8::FunctionCallbackArguments,
54
- mut retval: v8::ReturnValue,
55
- ) {
56
- // Input: Uint8Array
57
- let arg0 = args.get(0);
58
- if !arg0.is_uint8_array() {
59
- let msg = v8::String::new(scope, "Expected Uint8Array").unwrap();
60
- let error = v8::Exception::type_error(scope, msg);
61
- scope.throw_exception(error);
62
- return;
63
- }
64
-
65
- let uint8 = v8::Local::<v8::Uint8Array>::try_from(arg0).unwrap();
66
- let len = uint8.byte_length();
67
-
68
- // Copy bytes to vector for deserializer
69
- let mut data = vec![0u8; len];
70
- uint8.copy_contents(&mut data);
71
-
72
- let context = scope.get_current_context();
73
- let deserializer = v8::ValueDeserializer::new(scope, Box::new(TitanValueDeserializerDelegate), &data);
74
-
75
- // Read header
76
- if let Some(true) = deserializer.read_header(context) {
77
- // Read value
78
- if let Some(value) = deserializer.read_value(context) {
79
- retval.set(value);
80
- } else {
81
- // Invalid value format
82
- let msg = v8::String::new(scope, "Failed to deserialize value").unwrap();
83
- let error = v8::Exception::error(scope, msg);
84
- scope.throw_exception(error);
85
- }
86
- } else {
87
- // Invalid header
88
- let msg = v8::String::new(scope, "Invalid serialization header").unwrap();
89
- let error = v8::Exception::error(scope, msg);
90
- scope.throw_exception(error);
91
- }
92
- }
93
-