@twin.org/node-core 0.0.2-next.25 → 0.0.2-next.27

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 (107) hide show
  1. package/README.md +1 -1
  2. package/dist/es/bootstrap.js +374 -0
  3. package/dist/es/bootstrap.js.map +1 -0
  4. package/dist/es/builders/engineEnvBuilder.js +1051 -0
  5. package/dist/es/builders/engineEnvBuilder.js.map +1 -0
  6. package/dist/es/builders/engineServerEnvBuilder.js +197 -0
  7. package/dist/es/builders/engineServerEnvBuilder.js.map +1 -0
  8. package/dist/es/builders/extensionsBuilder.js +100 -0
  9. package/dist/es/builders/extensionsBuilder.js.map +1 -0
  10. package/dist/es/defaults.js +9 -0
  11. package/dist/es/defaults.js.map +1 -0
  12. package/dist/es/identity.js +169 -0
  13. package/dist/es/identity.js.map +1 -0
  14. package/dist/es/index.js +23 -0
  15. package/dist/es/index.js.map +1 -0
  16. package/dist/es/models/ICacheMetadata.js +4 -0
  17. package/dist/es/models/ICacheMetadata.js.map +1 -0
  18. package/dist/es/models/IEngineEnvironmentVariables.js +4 -0
  19. package/dist/es/models/IEngineEnvironmentVariables.js.map +1 -0
  20. package/dist/es/models/IEngineServerEnvironmentVariables.js +2 -0
  21. package/dist/es/models/IEngineServerEnvironmentVariables.js.map +1 -0
  22. package/dist/es/models/IModuleProtocol.js +2 -0
  23. package/dist/es/models/IModuleProtocol.js.map +1 -0
  24. package/dist/es/models/INodeEngineConfig.js +2 -0
  25. package/dist/es/models/INodeEngineConfig.js.map +1 -0
  26. package/dist/es/models/INodeEngineState.js +2 -0
  27. package/dist/es/models/INodeEngineState.js.map +1 -0
  28. package/dist/es/models/INodeEnvironmentVariables.js +2 -0
  29. package/dist/es/models/INodeEnvironmentVariables.js.map +1 -0
  30. package/dist/es/models/INodeOptions.js +2 -0
  31. package/dist/es/models/INodeOptions.js.map +1 -0
  32. package/dist/es/models/IProtocolHandlerResult.js +4 -0
  33. package/dist/es/models/IProtocolHandlerResult.js.map +1 -0
  34. package/dist/es/models/moduleProtocol.js +29 -0
  35. package/dist/es/models/moduleProtocol.js.map +1 -0
  36. package/dist/es/models/nodeExtensionMethods.js +2 -0
  37. package/dist/es/models/nodeExtensionMethods.js.map +1 -0
  38. package/dist/es/models/nodeFeatures.js +21 -0
  39. package/dist/es/models/nodeFeatures.js.map +1 -0
  40. package/dist/es/node.js +265 -0
  41. package/dist/es/node.js.map +1 -0
  42. package/dist/es/server.js +74 -0
  43. package/dist/es/server.js.map +1 -0
  44. package/dist/es/utils.js +418 -0
  45. package/dist/es/utils.js.map +1 -0
  46. package/dist/types/bootstrap.d.ts +27 -10
  47. package/dist/types/builders/engineEnvBuilder.d.ts +3 -2
  48. package/dist/types/builders/engineServerEnvBuilder.d.ts +3 -2
  49. package/dist/types/builders/extensionsBuilder.d.ts +2 -2
  50. package/dist/types/identity.d.ts +14 -0
  51. package/dist/types/index.d.ts +20 -15
  52. package/dist/types/models/ICacheMetadata.d.ts +17 -0
  53. package/dist/types/models/IEngineEnvironmentVariables.d.ts +12 -5
  54. package/dist/types/models/IEngineServerEnvironmentVariables.d.ts +1 -1
  55. package/dist/types/models/IModuleProtocol.d.ts +18 -0
  56. package/dist/types/models/INodeEngineState.d.ts +22 -0
  57. package/dist/types/models/INodeEnvironmentVariables.d.ts +49 -8
  58. package/dist/types/models/INodeOptions.d.ts +13 -3
  59. package/dist/types/models/IProtocolHandlerResult.d.ts +13 -0
  60. package/dist/types/models/moduleProtocol.d.ts +29 -0
  61. package/dist/types/models/nodeExtensionMethods.d.ts +2 -2
  62. package/dist/types/models/nodeFeatures.d.ts +5 -5
  63. package/dist/types/node.d.ts +17 -7
  64. package/dist/types/server.d.ts +7 -6
  65. package/dist/types/utils.d.ts +69 -2
  66. package/docs/changelog.md +7 -0
  67. package/docs/detailed-guide.md +129 -0
  68. package/docs/reference/functions/bootstrap.md +1 -1
  69. package/docs/reference/functions/bootstrapAuth.md +1 -1
  70. package/docs/reference/functions/bootstrapBlobEncryption.md +1 -1
  71. package/docs/reference/functions/bootstrapContextIdHandlers.md +35 -0
  72. package/docs/reference/functions/bootstrapImmutableProofMethod.md +1 -1
  73. package/docs/reference/functions/{bootstrapNodeUser.md → bootstrapNodeAdminUser.md} +3 -3
  74. package/docs/reference/functions/{bootstrapNodeIdentity.md → bootstrapNodeId.md} +3 -3
  75. package/docs/reference/functions/bootstrapSynchronisedStorage.md +1 -1
  76. package/docs/reference/functions/bootstrapTenantId.md +35 -0
  77. package/docs/reference/functions/buildConfiguration.md +2 -2
  78. package/docs/reference/functions/buildEngineConfiguration.md +7 -1
  79. package/docs/reference/functions/buildEngineServerConfiguration.md +7 -1
  80. package/docs/reference/functions/createModuleImportUrl.md +21 -0
  81. package/docs/reference/functions/getExtensionsCacheDir.md +31 -0
  82. package/docs/reference/functions/handleHttpsProtocol.md +49 -0
  83. package/docs/reference/functions/handleNpmProtocol.md +31 -0
  84. package/docs/reference/functions/hashUrl.md +19 -0
  85. package/docs/reference/functions/isCacheExpired.md +31 -0
  86. package/docs/reference/functions/overrideModuleImport.md +8 -2
  87. package/docs/reference/functions/parseModuleProtocol.md +19 -0
  88. package/docs/reference/functions/resolvePackageEntryPoint.md +32 -0
  89. package/docs/reference/functions/run.md +3 -3
  90. package/docs/reference/functions/start.md +8 -2
  91. package/docs/reference/index.md +18 -2
  92. package/docs/reference/interfaces/ICacheMetadata.md +27 -0
  93. package/docs/reference/interfaces/IEngineEnvironmentVariables.md +24 -9
  94. package/docs/reference/interfaces/IEngineServerEnvironmentVariables.md +36 -13
  95. package/docs/reference/interfaces/IModuleProtocol.md +27 -0
  96. package/docs/reference/interfaces/INodeEngineConfig.md +430 -0
  97. package/docs/reference/interfaces/INodeEngineState.md +39 -0
  98. package/docs/reference/interfaces/INodeEnvironmentVariables.md +149 -24
  99. package/docs/reference/interfaces/INodeOptions.md +21 -1
  100. package/docs/reference/interfaces/IProtocolHandlerResult.md +19 -0
  101. package/docs/reference/type-aliases/ModuleProtocol.md +5 -0
  102. package/docs/reference/variables/ModuleProtocol.md +37 -0
  103. package/docs/reference/variables/NodeFeatures.md +7 -7
  104. package/locales/en.json +20 -8
  105. package/package.json +40 -8
  106. package/dist/cjs/index.cjs +0 -2232
  107. package/dist/esm/index.mjs +0 -2179
@@ -26,6 +26,18 @@ The version of the server, defaults to the current version.
26
26
 
27
27
  ***
28
28
 
29
+ ### envVars?
30
+
31
+ > `optional` **envVars**: `object`
32
+
33
+ Additional environment variables to set.
34
+
35
+ #### Index Signature
36
+
37
+ \[`key`: `string`\]: `string`
38
+
39
+ ***
40
+
29
41
  ### envFilenames?
30
42
 
31
43
  > `optional` **envFilenames**: `string`[]
@@ -38,7 +50,7 @@ Additional environment variable filenames to load, defaults to .env.
38
50
 
39
51
  > `optional` **envPrefix**: `string`
40
52
 
41
- The prefix for environment variables, defaults to "TWIN_NODE_".
53
+ The prefix for environment variables, defaults to "TWIN_".
42
54
 
43
55
  ***
44
56
 
@@ -175,3 +187,11 @@ Method to extend the engine server with any additional options.
175
187
 
176
188
  The state storage to use for the engine.
177
189
  If not provided, a default file-based state storage will be used.
190
+
191
+ ***
192
+
193
+ ### disableProcessExitOnFailure?
194
+
195
+ > `optional` **disableProcessExitOnFailure**: `boolean`
196
+
197
+ Disables process.exit calls on fatal errors and throws instead.
@@ -0,0 +1,19 @@
1
+ # Interface: IProtocolHandlerResult
2
+
3
+ The result from a protocol handler.
4
+
5
+ ## Properties
6
+
7
+ ### resolvedPath
8
+
9
+ > **resolvedPath**: `string`
10
+
11
+ The resolved path to the module file.
12
+
13
+ ***
14
+
15
+ ### cached
16
+
17
+ > **cached**: `boolean`
18
+
19
+ Whether the module was cached.
@@ -0,0 +1,5 @@
1
+ # Type Alias: ModuleProtocol
2
+
3
+ > **ModuleProtocol** = *typeof* [`ModuleProtocol`](../variables/ModuleProtocol.md)\[keyof *typeof* [`ModuleProtocol`](../variables/ModuleProtocol.md)\]
4
+
5
+ The protocol type for a module.
@@ -0,0 +1,37 @@
1
+ # Variable: ModuleProtocol
2
+
3
+ > `const` **ModuleProtocol**: `object`
4
+
5
+ The protocol types for modules.
6
+
7
+ ## Type Declaration
8
+
9
+ ### Local
10
+
11
+ > `readonly` **Local**: `"local"` = `"local"`
12
+
13
+ Local module (starts with . or / or file://).
14
+
15
+ ### Npm
16
+
17
+ > `readonly` **Npm**: `"npm"` = `"npm"`
18
+
19
+ NPM package (starts with npm:).
20
+
21
+ ### Https
22
+
23
+ > `readonly` **Https**: `"https"` = `"https"`
24
+
25
+ HTTPS URL (starts with https://).
26
+
27
+ ### Http
28
+
29
+ > `readonly` **Http**: `"http"` = `"http"`
30
+
31
+ HTTP URL (starts with http://).
32
+
33
+ ### Default
34
+
35
+ > `readonly` **Default**: `"default"` = `"default"`
36
+
37
+ Default/standard module resolution.
@@ -6,20 +6,20 @@ The features that can be enabled on the node.
6
6
 
7
7
  ## Type Declaration
8
8
 
9
- ### NodeIdentity
9
+ ### NodeId
10
10
 
11
- > `readonly` **NodeIdentity**: `"node-identity"` = `"node-identity"`
11
+ > `readonly` **NodeId**: `"node-identity"` = `"node-identity"`
12
12
 
13
- NodeIdentity - generates an identity for the node if not provided in config.
13
+ NodeId - generates an identity for the node if not provided in config.
14
14
 
15
- ### NodeUser
15
+ ### NodeAdminUser
16
16
 
17
- > `readonly` **NodeUser**: `"node-user"` = `"node-user"`
17
+ > `readonly` **NodeAdminUser**: `"node-admin-user"` = `"node-admin-user"`
18
18
 
19
- NodeUser - generates a user for the node if not provided in config.
19
+ NodeAdminUser - generates an admin user for the node if not provided in config.
20
20
 
21
21
  ### NodeWallet
22
22
 
23
23
  > `readonly` **NodeWallet**: `"node-wallet"` = `"node-wallet"`
24
24
 
25
- NodeWallet - generates a wallet for the node and funds it when there is a faucet available.
25
+ NodeWallet - generates wallets for any identities that need them.
package/locales/en.json CHANGED
@@ -2,7 +2,11 @@
2
2
  "error": {
3
3
  "node": {
4
4
  "storageFileRootNotSet": "{storageFileRoot} is not set, the server will not start without it, please set it in the shell or create a .env file",
5
- "extensionLoadingError": "Failed to load extension \"{extension}\""
5
+ "extensionLoadingError": "Failed to load extension \"{extension}\"",
6
+ "insecureProtocol": "Cannot load extension from insecure protocol: {protocol}. Only HTTPS is allowed for remote extensions.",
7
+ "extensionDownloadFailed": "Failed to download extension from {url}",
8
+ "extensionNpmInstallFailed": "Failed to install npm extension: {package}",
9
+ "extensionSizeLimitExceeded": "Extension download size exceeds limit: {size} bytes > {limit} bytes"
6
10
  }
7
11
  },
8
12
  "node": {
@@ -11,12 +15,13 @@
11
15
  "existingMnemonic": "Mnemonic already exists",
12
16
  "fundingWallet": "Funding wallet \"{address}\"",
13
17
  "fundedWallet": "Wallet already funded",
14
- "generatingNodeIdentity": "Generating node identity",
15
- "existingNodeIdentity": "Node identity already exists \"{identity}\"",
16
- "createdNodeIdentity": "Node identity created \"{identity}\"",
18
+ "processingIdentity": "Processing identity of type \"{identityType}\"",
19
+ "generatingIdentity": "Generating identity of type \"{identityType}\"",
20
+ "existingIdentity": "Identity already exists \"{identity}\"",
21
+ "createdIdentity": "Identity created \"{identity}\"",
17
22
  "identityExplorer": "Identity explorer \"{url}\"",
18
- "creatingNodeUser": "Creating node user \"{email}\"",
19
- "existingNodeUser": "Node user already exists \"{email}\"",
23
+ "creatingUser": "Creating user \"{email}\"",
24
+ "existingUser": "User already exists \"{email}\"",
20
25
  "creatingAuthKey": "Creating authentication key \"{keyName}\"",
21
26
  "existingAuthKey": "Authentication key already exists \"{keyName}\"",
22
27
  "addingVerificationMethod": "Adding {title} verification method \"{methodId}\"",
@@ -29,7 +34,7 @@
29
34
  "existingSynchronisedStorageBlobEncryptionKey": "Synchronised storage blob encryption key already exists \"{keyName}\"",
30
35
  "creatingUserProfile": "Creating user profile \"{identity}\"",
31
36
  "existingUserProfile": "User profile already exists \"{identity}\"",
32
- "nodeIdentity": "Node identity \"{identity}\"",
37
+ "nodeId": "Node identity \"{identity}\"",
33
38
  "nodeAdminUserEmail": "Node Admin User Email \"{email}\"",
34
39
  "nodeAdminUserPassword": "Node Admin User Password \"{password}\"",
35
40
  "extensionLoading": "Loading Extension",
@@ -37,6 +42,13 @@
37
42
  "extensionInitialisingEngineServer": "Initialising engine server for extension \"{extension}\"",
38
43
  "extensionShutdown": "Shutdown extension \"{extension}\"",
39
44
  "extendingEngine": "Extending Engine",
40
- "extendingEngineServer": "Extending Engine Server"
45
+ "extendingEngineServer": "Extending Engine Server",
46
+ "extensionSecurityWarning": "SECURITY WARNING: Loading extension from external URL: {url}",
47
+ "extensionNpmInstalling": "Installing npm extension",
48
+ "extensionHttpsDownloading": "Downloading HTTPS extension",
49
+ "extensionCacheExpired": "Cache expired for extension: {url}",
50
+ "extensionForceRefresh": "Force refresh enabled for extension: {url}",
51
+ "createdTenantId": "Created tenant id \"{identity}\" with api key \"{apiKey}\"",
52
+ "existingTenantId": "Existing tenant id \"{identity}\""
41
53
  }
42
54
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twin.org/node-core",
3
- "version": "0.0.2-next.25",
3
+ "version": "0.0.2-next.27",
4
4
  "description": "TWIN Node Core for serving APIs using the specified configuration",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,10 +13,27 @@
13
13
  "engines": {
14
14
  "node": ">=20.0.0"
15
15
  },
16
+ "scripts": {
17
+ "clean": "rimraf dist coverage docs/reference",
18
+ "build": "tspc",
19
+ "dev": "nodemon --watch src --ext ts --exec \"npm run build\"",
20
+ "merge-locales": "merge-locales",
21
+ "test": "vitest --run --config ./vitest.config.ts --no-cache",
22
+ "test:build": "tspc -p ./tests/tsconfig.json --noEmit",
23
+ "validate-locales": "validate-locales",
24
+ "test:coverage": "vitest --run --coverage --config ./vitest.config.ts --no-cache",
25
+ "docs:clean": "rimraf docs/reference",
26
+ "docs:generate": "typedoc",
27
+ "docs": "npm run docs:clean && npm run docs:generate",
28
+ "dist": "npm run clean && npm run build && npm run merge-locales && npm run validate-locales && npm run test:build && npm run test && npm run docs",
29
+ "dist:no-test": "npm run clean && npm run build && npm run merge-locales && npm run docs"
30
+ },
16
31
  "dependencies": {
17
32
  "@twin.org/api-auth-entity-storage-service": "next",
18
- "@twin.org/cli-core": "next",
33
+ "@twin.org/api-tenant-processor": "next",
34
+ "@twin.org/context": "next",
19
35
  "@twin.org/core": "next",
36
+ "@twin.org/cli-core": "next",
20
37
  "@twin.org/crypto": "next",
21
38
  "@twin.org/data-space-connector-models": "next",
22
39
  "@twin.org/engine": "next",
@@ -36,20 +53,35 @@
36
53
  "dotenv": "17.2.3",
37
54
  "schema-dts": "1.1.5"
38
55
  },
39
- "main": "./dist/cjs/index.cjs",
40
- "module": "./dist/esm/index.mjs",
56
+ "devDependencies": {
57
+ "@twin.org/entity-storage-connector-memory": "next",
58
+ "@twin.org/merge-locales": "next",
59
+ "@twin.org/nameof-transformer": "next",
60
+ "@twin.org/nameof-vitest-plugin": "next",
61
+ "@twin.org/validate-locales": "next",
62
+ "@twin.org/ts-to-openapi": "next",
63
+ "@vitest/coverage-v8": "3.2.4",
64
+ "copyfiles": "2.4.1",
65
+ "nodemon": "3.1.10",
66
+ "rimraf": "6.0.1",
67
+ "ts-patch": "3.3.0",
68
+ "typedoc": "0.28.13",
69
+ "typedoc-plugin-markdown": "4.9.0",
70
+ "typescript": "5.9.3",
71
+ "vitest": "3.2.4"
72
+ },
73
+ "main": "./dist/es/index.js",
41
74
  "types": "./dist/types/index.d.ts",
42
75
  "exports": {
43
76
  ".": {
44
77
  "types": "./dist/types/index.d.ts",
45
- "require": "./dist/cjs/index.cjs",
46
- "import": "./dist/esm/index.mjs"
78
+ "import": "./dist/es/index.js",
79
+ "default": "./dist/es/index.js"
47
80
  },
48
81
  "./locales/*.json": "./locales/*.json"
49
82
  },
50
83
  "files": [
51
- "dist/cjs",
52
- "dist/esm",
84
+ "dist/es",
53
85
  "dist/types",
54
86
  "locales",
55
87
  "docs"