revojs 0.2.64 → 0.3.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/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { mimeType, mimeTypes } from "./assets/index.js";
2
- import { STATE_CONTEXT, VARIABLE_CONTEXT, createScope, defineContext, defineHook, definePlugin, dispatchHook, dispatchHookSingle, getContext, registerHook, registerHooks, setContext, useVariableContext, useVariables } from "./scope/index.js";
2
+ import { STATE_CONTEXT, VARIABLE_CONTEXT, createScope, defineContext, defineHook, definePlugin, dispatchHook, dispatchHookSingle, getContext, registerHook, registerHooks, requireContext, setContext, useVariableContext, useVariables } from "./scope/index.js";
3
3
  import { BASE64_DECODE, BASE64_ENCODE, ENCRYPTION_ALGORITHM, MIN_SECRET_LENGTH, PASSWORD_ALGORITHM, PASSWORD_ITERATIONS, decoder, decrypt, derivePassword, digest, encoder, encrypt, equalsConstantTime, hashPassword, isPasswordHash, needsPasswordRehash, parsePasswordHash, randomToken, sign, toBytes, useSecretKey, verify, verifyPassword } from "./crypto/index.js";
4
4
  import { GROUP_MATCH, HOOK_MATCH, OPTIONAL_PARAMETER_MATCH, OPTIONAL_WILDCARD_MATCH, PARAMETER_MATCH, ROUTE_CONTEXT, ROUTE_RESOLVER_CONTEXT, Router, WILDCARD_MATCH, fillSegments, toSegments, useRoute, useRouteResolverContext } from "./router/index.js";
5
- export { BASE64_DECODE, BASE64_ENCODE, ENCRYPTION_ALGORITHM, GROUP_MATCH, HOOK_MATCH, MIN_SECRET_LENGTH, OPTIONAL_PARAMETER_MATCH, OPTIONAL_WILDCARD_MATCH, PARAMETER_MATCH, PASSWORD_ALGORITHM, PASSWORD_ITERATIONS, ROUTE_CONTEXT, ROUTE_RESOLVER_CONTEXT, Router, STATE_CONTEXT, VARIABLE_CONTEXT, WILDCARD_MATCH, createScope, decoder, decrypt, defineContext, defineHook, definePlugin, derivePassword, digest, dispatchHook, dispatchHookSingle, encoder, encrypt, equalsConstantTime, fillSegments, getContext, hashPassword, isPasswordHash, mimeType, mimeTypes, needsPasswordRehash, parsePasswordHash, randomToken, registerHook, registerHooks, setContext, sign, toBytes, toSegments, useRoute, useRouteResolverContext, useSecretKey, useVariableContext, useVariables, verify, verifyPassword };
5
+ export { BASE64_DECODE, BASE64_ENCODE, ENCRYPTION_ALGORITHM, GROUP_MATCH, HOOK_MATCH, MIN_SECRET_LENGTH, OPTIONAL_PARAMETER_MATCH, OPTIONAL_WILDCARD_MATCH, PARAMETER_MATCH, PASSWORD_ALGORITHM, PASSWORD_ITERATIONS, ROUTE_CONTEXT, ROUTE_RESOLVER_CONTEXT, Router, STATE_CONTEXT, VARIABLE_CONTEXT, WILDCARD_MATCH, createScope, decoder, decrypt, defineContext, defineHook, definePlugin, derivePassword, digest, dispatchHook, dispatchHookSingle, encoder, encrypt, equalsConstantTime, fillSegments, getContext, hashPassword, isPasswordHash, mimeType, mimeTypes, needsPasswordRehash, parsePasswordHash, randomToken, registerHook, registerHooks, requireContext, setContext, sign, toBytes, toSegments, useRoute, useRouteResolverContext, useSecretKey, useVariableContext, useVariables, verify, verifyPassword };
package/dist/package.js CHANGED
@@ -1,6 +1,6 @@
1
1
  //#region package.json
2
2
  var name = "revojs";
3
- var version = "0.2.64";
3
+ var version = "0.3.0";
4
4
  var repository = {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/tellua/revojs.git"
@@ -31,7 +31,6 @@ var exports = {
31
31
  };
32
32
  var scripts = {
33
33
  "build": "vite build",
34
- "test": "node --test tests/*.test.mjs",
35
34
  "typecheck": "bun check",
36
35
  "watch": "vite build --watch"
37
36
  };
@@ -41,7 +40,7 @@ var dependencies = {
41
40
  "vite": "^8.3.4"
42
41
  };
43
42
  var devDependencies = {
44
- "@revojs/tsconfig": "*",
43
+ "@revojs/tsconfig": "0.3.0",
45
44
  "@types/node": "^26.6.4"
46
45
  };
47
46
  var optionalDependencies = { "typescript": "^7.0.2" };
@@ -31,6 +31,7 @@ export declare function registerHook<T extends Hook>(scope: Scope, name: Descrip
31
31
  export declare function dispatchHook<T extends Hook>(scope: Scope, name: Descriptor<T>, ...[content]: Parameters<T>): Promise<Awaited<ReturnType<T>>[]>;
32
32
  export declare function dispatchHookSingle<T extends Hook>(scope: Scope, name: Descriptor<T>, ...content: Parameters<T>): Promise<ReturnType<T> | undefined>;
33
33
  export declare function getContext<T>(scope: Scope, input: Descriptor<T>): T;
34
+ export declare function requireContext<T>(scope: Scope, input: Descriptor<T>): T;
34
35
  export declare function setContext<T>(scope: Scope, input: Descriptor<T>, value: T): T;
35
36
  export declare function createScope(inputScope?: Mergeable<Scope>): Promise<{
36
37
  hooks?: {
@@ -25,6 +25,10 @@ function getContext(scope, input) {
25
25
  if (Object.hasOwn(scope.context, input)) return scope.context[input];
26
26
  return {};
27
27
  }
28
+ function requireContext(scope, input) {
29
+ if (Object.hasOwn(scope.context, input)) return scope.context[input];
30
+ throw new Error(`Context "${input}" is not set in this scope`);
31
+ }
28
32
  function setContext(scope, input, value) {
29
33
  scope.context[input] = value;
30
34
  return value;
@@ -49,9 +53,12 @@ function useVariableContext(scope) {
49
53
  return getContext(scope, VARIABLE_CONTEXT);
50
54
  }
51
55
  function useVariables(scope) {
56
+ const context = useVariableContext(scope);
57
+ const cached = resolvedVariables.get(context);
58
+ if (cached) return cached;
52
59
  const normalize = (name) => name.toLowerCase().replace(/[^a-z0-9]/g, "");
53
60
  const entries = /* @__PURE__ */ new Map();
54
- for (const [name, value] of Object.entries(useVariableContext(scope))) entries.set(normalize(name), [name, value]);
61
+ for (const [name, value] of Object.entries(context)) entries.set(normalize(name), [name, value]);
55
62
  for (const [name, variable] of Object.entries(variables)) {
56
63
  const key = normalize(name);
57
64
  let value = entries.get(key)?.[1] ?? variable.default;
@@ -62,7 +69,9 @@ function useVariables(scope) {
62
69
  }
63
70
  entries.set(key, [name, value]);
64
71
  }
65
- return Object.fromEntries(entries.values());
72
+ const resolved = Object.fromEntries(entries.values());
73
+ resolvedVariables.set(context, resolved);
74
+ return resolved;
66
75
  }
67
76
  function definePlugin(plugin) {
68
77
  return plugin;
@@ -80,6 +89,7 @@ function defineContext(name) {
80
89
  return name;
81
90
  }
82
91
  var VARIABLE_CONTEXT = defineContext("VARIABLE_CONTEXT");
92
+ var resolvedVariables = /* @__PURE__ */ new WeakMap();
83
93
  var STATE_CONTEXT = defineContext("STATE_CONTEXT");
84
94
  //#endregion
85
- export { STATE_CONTEXT, VARIABLE_CONTEXT, createScope, defineContext, defineHook, definePlugin, dispatchHook, dispatchHookSingle, getContext, registerHook, registerHooks, setContext, useVariableContext, useVariables };
95
+ export { STATE_CONTEXT, VARIABLE_CONTEXT, createScope, defineContext, defineHook, definePlugin, dispatchHook, dispatchHookSingle, getContext, registerHook, registerHooks, requireContext, setContext, useVariableContext, useVariables };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "revojs",
3
- "version": "0.2.64",
3
+ "version": "0.3.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -38,7 +38,6 @@
38
38
  },
39
39
  "scripts": {
40
40
  "build": "vite build",
41
- "test": "node --test tests/*.test.mjs",
42
41
  "typecheck": "bun check",
43
42
  "watch": "vite build --watch"
44
43
  },
@@ -48,7 +47,7 @@
48
47
  "vite": "^8.3.4"
49
48
  },
50
49
  "devDependencies": {
51
- "@revojs/tsconfig": "*",
50
+ "@revojs/tsconfig": "0.3.0",
52
51
  "@types/node": "^26.6.4"
53
52
  },
54
53
  "optionalDependencies": {