@actualwave/deferred-data-access 2.0.0 → 2.1.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 (128) hide show
  1. package/README.md +400 -27
  2. package/SKILL.md +106 -0
  3. package/command/index.d.ts.map +1 -0
  4. package/command/index.es.js +98 -0
  5. package/command/index.es.js.map +1 -0
  6. package/command/index.js +102 -4
  7. package/command/index.js.map +1 -1
  8. package/command/package.json +4 -1
  9. package/command/src/command-chain.d.ts +8 -1
  10. package/command/src/command-chain.d.ts.map +1 -0
  11. package/command/src/command-chain.js +9 -0
  12. package/command/src/command-chain.js.map +1 -1
  13. package/command/src/command-handler.d.ts.map +1 -0
  14. package/command/src/command.d.ts +2 -2
  15. package/command/src/command.d.ts.map +1 -0
  16. package/command/src/command.js +5 -6
  17. package/command/src/command.js.map +1 -1
  18. package/core/core.d.ts.map +1 -0
  19. package/core/core.js +23 -25
  20. package/core/core.js.map +1 -1
  21. package/core/index.d.ts.map +1 -0
  22. package/deferred-data-access.umd.js +2 -0
  23. package/deferred-data-access.umd.js.map +1 -0
  24. package/index.d.ts.map +1 -0
  25. package/{dist/deferred-data-access.js → index.es.js} +199 -138
  26. package/index.es.js.map +1 -0
  27. package/index.js +627 -2
  28. package/index.js.map +1 -1
  29. package/interface/index.d.ts.map +1 -0
  30. package/interface/index.es.js +380 -0
  31. package/interface/index.es.js.map +1 -0
  32. package/interface/index.js +396 -7
  33. package/interface/index.js.map +1 -1
  34. package/interface/package.json +4 -1
  35. package/interface/src/handshake.d.ts.map +1 -0
  36. package/interface/src/handshake.js +6 -4
  37. package/interface/src/handshake.js.map +1 -1
  38. package/interface/src/helpers.d.ts.map +1 -0
  39. package/interface/src/intialize.d.ts +5 -2
  40. package/interface/src/intialize.d.ts.map +1 -0
  41. package/interface/src/intialize.js +37 -57
  42. package/interface/src/intialize.js.map +1 -1
  43. package/interface/src/request.d.ts +3 -2
  44. package/interface/src/request.d.ts.map +1 -0
  45. package/interface/src/request.js +39 -29
  46. package/interface/src/request.js.map +1 -1
  47. package/interface/src/types.d.ts.map +1 -0
  48. package/interface/src/utils.d.ts +2 -2
  49. package/interface/src/utils.d.ts.map +1 -0
  50. package/interface/src/utils.js +44 -29
  51. package/interface/src/utils.js.map +1 -1
  52. package/package.json +7 -6
  53. package/proxy/index.d.ts.map +1 -0
  54. package/proxy/index.es.js +144 -0
  55. package/proxy/index.es.js.map +1 -0
  56. package/proxy/index.js +155 -5
  57. package/proxy/index.js.map +1 -1
  58. package/proxy/package.json +4 -1
  59. package/proxy/src/command.d.ts.map +1 -0
  60. package/proxy/src/proxy.d.ts +2 -2
  61. package/proxy/src/proxy.d.ts.map +1 -0
  62. package/proxy/src/proxy.js +13 -3
  63. package/proxy/src/proxy.js.map +1 -1
  64. package/proxy/src/traps.d.ts +1 -1
  65. package/proxy/src/traps.d.ts.map +1 -0
  66. package/proxy/src/traps.js +4 -14
  67. package/proxy/src/traps.js.map +1 -1
  68. package/proxy/src/types.d.ts.map +1 -0
  69. package/proxy/src/utils.d.ts +6 -0
  70. package/proxy/src/utils.d.ts.map +1 -0
  71. package/proxy/src/utils.js +11 -5
  72. package/proxy/src/utils.js.map +1 -1
  73. package/record/index.d.ts.map +1 -0
  74. package/record/index.es.js +26 -0
  75. package/record/index.es.js.map +1 -0
  76. package/record/index.js +31 -2
  77. package/record/index.js.map +1 -1
  78. package/record/package.json +4 -1
  79. package/record/record.d.ts +2 -2
  80. package/record/record.d.ts.map +1 -0
  81. package/record/record.js +9 -3
  82. package/record/record.js.map +1 -1
  83. package/resource/index.d.ts +1 -0
  84. package/resource/index.d.ts.map +1 -0
  85. package/resource/index.es.js +191 -0
  86. package/resource/index.es.js.map +1 -0
  87. package/resource/index.js +206 -6
  88. package/resource/index.js.map +1 -1
  89. package/resource/package.json +4 -1
  90. package/resource/src/default-resource-pool.d.ts +1 -0
  91. package/resource/src/default-resource-pool.d.ts.map +1 -0
  92. package/resource/src/default-resource-pool.js +8 -5
  93. package/resource/src/default-resource-pool.js.map +1 -1
  94. package/resource/src/finalization-registry.d.ts +13 -0
  95. package/resource/src/finalization-registry.d.ts.map +1 -0
  96. package/resource/src/finalization-registry.js +18 -0
  97. package/resource/src/finalization-registry.js.map +1 -0
  98. package/resource/src/resource-pool-registry.d.ts +1 -0
  99. package/resource/src/resource-pool-registry.d.ts.map +1 -0
  100. package/resource/src/resource-pool-registry.js +10 -8
  101. package/resource/src/resource-pool-registry.js.map +1 -1
  102. package/resource/src/resource-pool.d.ts +8 -1
  103. package/resource/src/resource-pool.d.ts.map +1 -0
  104. package/resource/src/resource-pool.js +29 -17
  105. package/resource/src/resource-pool.js.map +1 -1
  106. package/resource/src/resource.d.ts +1 -1
  107. package/resource/src/resource.d.ts.map +1 -0
  108. package/resource/src/resource.js +3 -2
  109. package/resource/src/resource.js.map +1 -1
  110. package/resource/src/utils.d.ts +1 -1
  111. package/resource/src/utils.d.ts.map +1 -0
  112. package/resource/src/utils.js +9 -1
  113. package/resource/src/utils.js.map +1 -1
  114. package/utils/index.d.ts.map +1 -0
  115. package/utils/index.es.js +48 -0
  116. package/utils/index.es.js.map +1 -0
  117. package/utils/index.js +54 -3
  118. package/utils/index.js.map +1 -1
  119. package/utils/package.json +4 -1
  120. package/utils/src/types.d.ts +3 -3
  121. package/utils/src/types.d.ts.map +1 -0
  122. package/utils/src/utils.d.ts +18 -2
  123. package/utils/src/utils.d.ts.map +1 -0
  124. package/utils/src/utils.js +28 -4
  125. package/utils/src/utils.js.map +1 -1
  126. package/dist/deferred-data-access.js.map +0 -1
  127. package/dist/deferred-data-access.umd.js +0 -2
  128. package/dist/deferred-data-access.umd.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"intialize.js","sourceRoot":"","sources":["../../../../packages/deferred-data-access/interface/src/intialize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intialize.js","sourceRoot":"","sources":["../../../../packages/deferred-data-access/interface/src/intialize.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { ResourcePool } from '@actualwave/deferred-data-access/resource';
1
2
  import { RequestMessage } from './types';
2
- export declare const pool: import("@actualwave/deferred-data-access/resource").ResourcePool;
3
- export declare const applyRemoteRequest: ({ command, command: { type, value }, context, }: RequestMessage) => any;
3
+ export declare const getPool: () => ResourcePool;
4
+ export declare const applyRemoteRequest: ({ command, command: { type, value }, context, }: RequestMessage) => unknown;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../../packages/deferred-data-access/interface/src/request.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,YAAY,EACb,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIzC,eAAO,MAAM,OAAO,oBAMnB,CAAC;AAoDF,eAAO,MAAM,kBAAkB,GAAI,iDAIhC,cAAc,YAgChB,CAAC"}
@@ -1,49 +1,59 @@
1
1
  import { ProxyCommand } from '@actualwave/deferred-data-access/proxy';
2
2
  import { getRegistry, isResourceObject, } from '@actualwave/deferred-data-access/resource';
3
- const registry = getRegistry();
4
- export const pool = registry.createPool();
3
+ let pool;
4
+ export const getPool = () => {
5
+ if (!pool) {
6
+ pool = getRegistry().createPool();
7
+ }
8
+ return pool;
9
+ };
5
10
  const extractResourceFrom = (value) => {
6
11
  if (!isResourceObject(value)) {
7
12
  return value;
8
13
  }
9
14
  const { poolId, id } = value;
10
- const pool = getRegistry().get(poolId);
11
- if (!pool) {
15
+ const resourcePool = getRegistry().get(poolId);
16
+ if (!resourcePool) {
12
17
  throw new Error(`Resource Pool "${poolId}" does not exist.`);
13
18
  }
14
- const target = pool.getById(id);
15
- if (!target) {
19
+ const target = resourcePool.getById(id);
20
+ if (target === undefined) {
16
21
  throw new Error(`Resource "${id}" does not exist, pool "${poolId}".`);
17
22
  }
18
23
  return target;
19
24
  };
25
+ const commandDispatch = {
26
+ [ProxyCommand.GET]: (target, name) => target[name],
27
+ [ProxyCommand.SET]: (target, name, value) => {
28
+ target[name] = extractResourceFrom(value);
29
+ return target[name];
30
+ },
31
+ [ProxyCommand.DELETE_PROPERTY]: (target, name) => delete target[name],
32
+ [ProxyCommand.APPLY]: (target, _name, value) => {
33
+ const [exeContext, args] = value;
34
+ return target.apply(extractResourceFrom(exeContext), args.map(extractResourceFrom));
35
+ },
36
+ [ProxyCommand.METHOD_CALL]: (target, name, value) => target[name](...value.map(extractResourceFrom)),
37
+ };
20
38
  export const applyRemoteRequest = ({ command, command: { type, value }, context, }) => {
21
39
  const target = extractResourceFrom(context);
22
40
  const name = command.name;
23
41
  if (type !== ProxyCommand.APPLY && !target) {
24
- throw new Error(`Cannot excute command ${type}/${String(name)} on non existent target(${target}).`);
25
- }
26
- let result;
27
- switch (type) {
28
- case ProxyCommand.GET:
29
- result = target[name];
30
- break;
31
- case ProxyCommand.SET:
32
- return (target[name] = extractResourceFrom(value));
33
- case ProxyCommand.DELETE_PROPERTY:
34
- return delete target[name];
35
- case ProxyCommand.APPLY:
36
- {
37
- const [exeContext, args] = value;
38
- result = target.apply(extractResourceFrom(exeContext), args.map(extractResourceFrom));
39
- }
40
- break;
41
- case ProxyCommand.METHOD_CALL:
42
- result = target[name](...value.map(extractResourceFrom));
43
- break;
44
- }
45
- if (result && typeof result === 'function') {
46
- const resource = pool.set(result);
42
+ throw new Error(
43
+ // Fix typo: "excute" → "execute"
44
+ `Cannot execute command ${type}/${String(name)} on non-existent target (${target}).`);
45
+ }
46
+ const dispatch = commandDispatch[type];
47
+ if (!dispatch) {
48
+ throw new Error(`Unknown command type "${type}" cannot be applied remotely.`);
49
+ }
50
+ const result = dispatch(target, name, value);
51
+ // For SET and DELETE, return the result directly without wrapping
52
+ if (type === ProxyCommand.SET || type === ProxyCommand.DELETE_PROPERTY) {
53
+ return result;
54
+ }
55
+ if (result !== null && result !== undefined && typeof result === 'function') {
56
+ const resource = getPool().set(result);
47
57
  return resource.toObject();
48
58
  }
49
59
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../../packages/deferred-data-access/interface/src/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EACL,WAAW,EACX,gBAAgB,GAGjB,MAAM,2CAA2C,CAAC;AAInD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;AAE1C,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAO,EAAE;IAClD,IAAI,CAAC,gBAAgB,CAAC,KAAY,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,KAAuB,CAAC;IAE/C,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,kBAAkB,MAAM,mBAAmB,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEhC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,aAAa,EAAE,2BAA2B,MAAM,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EACjC,OAAO,EACP,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EACxB,OAAO,GACQ,EAAE,EAAE;IACnB,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAoB,CAAC;IAE1C,IAAI,IAAI,KAAK,YAAY,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,IAAI,MAAM,CACrC,IAAI,CACL,2BAA2B,MAAM,IAAI,CACvC,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC;IAEX,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,YAAY,CAAC,GAAG;YACnB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM;QACR,KAAK,YAAY,CAAC,GAAG;YACnB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,KAAK,YAAY,CAAC,eAAe;YAC/B,OAAO,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,KAAK,YAAY,CAAC,KAAK;YACrB,CAAC;gBACC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,KAA6B,CAAC;gBACzD,MAAM,GAAG,MAAM,CAAC,KAAK,CACnB,mBAAmB,CAAC,UAAU,CAAC,EAC/B,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAC9B,CAAC;YACJ,CAAC;YACD,MAAM;QACR,KAAK,YAAY,CAAC,WAAW;YAC3B,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAI,KAAmB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACxE,MAAM;IACV,CAAC;IAED,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAa,CAAC;QAC9C,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../../packages/deferred-data-access/interface/src/request.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../packages/deferred-data-access/interface/src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAErD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;IACxD,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;IAC1D,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG;IACvD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG;IACxD,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,qBAAqB,GAAG,mBAAmB,CAAC,GAAG;IAC1E,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG;IAChD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,kBAAkB,GACzC,cAAc,GAAG;IACf,IAAI,EAAE,aAAa,CAAC;CACrB,CAAC;AAEJ,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG;IACzC,OAAO,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B,CAAC"}
@@ -14,8 +14,8 @@ export declare const createRequestMessage: (source: string, target: string) => (
14
14
  export declare const createResponseMessage: (source: string) => ({ id, source: target }: RequestMessage, value: unknown, error?: {
15
15
  message: string;
16
16
  }) => ResponseMessage;
17
- export declare const createIsHandshakeMessage: (id?: string) => (data: any) => boolean;
18
- export declare const createIsMessage: (target: string) => (data: any) => boolean;
17
+ export declare const createIsHandshakeMessage: (id?: string) => (data: unknown) => boolean;
18
+ export declare const createIsMessage: (target: string) => (data: unknown) => boolean;
19
19
  interface ResolveOrTimeoutConfig<T> {
20
20
  handler: Promise<T> | ((resolve: (data: T) => void, reject: (data: unknown) => void) => unknown);
21
21
  timeout: number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../packages/deferred-data-access/interface/src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EACb,MAAM,wCAAwC,CAAC;AAMhD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI1D,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAED,eAAO,MAAM,UAAU,cAA2B,CAAC;AAEnD,eAAO,MAAM,iBAAiB,cAA0B,CAAC;AA2CzD,eAAO,MAAM,oBAAoB,GAC9B,QAAQ,MAAM,EAAE,QAAQ,MAAM,MAE7B,cAAc,YAAY,EAC1B,UAAU,OAAO,CAAC,OAAO,CAAC,EAC1B,WAAwB,KACvB,OAAO,CAAC,cAAc,CA0BxB,CAAC;AAEJ,eAAO,MAAM,qBAAqB,GAC/B,QAAQ,MAAM,MAGb,wBAAwB,cAAc,EACtC,OAAO,OAAO,EACd,QAAQ;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAC1B,eAOD,CAAC;AAEL,eAAO,MAAM,wBAAwB,GAClC,WAAO,MACP,MAAM,OAAO,KAAG,OAKhB,CAAC;AAEJ,eAAO,MAAM,eAAe,GACzB,QAAQ,MAAM,MACd,MAAM,OAAO,KAAG,OAIhB,CAAC;AAEJ,UAAU,sBAAsB,CAAC,CAAC;IAChC,OAAO,EACH,OAAO,CAAC,CAAC,CAAC,GACV,CAAC,CACC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,KAC5B,OAAO,CAAC,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,gDAKjC,sBAAsB,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAiCvC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,OAAO,GAAG,QACsC,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { createUIDGenerator, } from '@actualwave/deferred-data-access/utils';
2
- import { ProxyCommand, unwrapProxy, } from '@actualwave/deferred-data-access/proxy';
3
- import { isWrappedWithProxy } from '@actualwave/deferred-data-access/proxy';
4
- import { pool } from './request';
2
+ import { ProxyCommand, unwrapProxy, isWrappedWithProxy, } from '@actualwave/deferred-data-access/proxy';
3
+ import { getPool } from './request';
5
4
  export var InterfaceType;
6
5
  (function (InterfaceType) {
7
6
  InterfaceType["HOST"] = "host";
@@ -15,12 +14,12 @@ export var MessageType;
15
14
  export const generateId = createUIDGenerator('wi');
16
15
  export const generateMessageId = createUIDGenerator('m');
17
16
  const lookupForResource = async (value) => {
18
- if (!value) {
17
+ if (value === null || value === undefined) {
19
18
  return value;
20
19
  }
21
- if (value instanceof Array) {
20
+ if (Array.isArray(value)) {
22
21
  const list = [];
23
- for (let item of value) {
22
+ for (const item of value) {
24
23
  list.push(await lookupForResource(item));
25
24
  }
26
25
  return list;
@@ -30,7 +29,7 @@ const lookupForResource = async (value) => {
30
29
  return lookupForResource(target);
31
30
  }
32
31
  if (typeof value === 'function') {
33
- const resource = pool.set(value);
32
+ const resource = getPool().set(value);
34
33
  return resource.toObject();
35
34
  }
36
35
  return value;
@@ -83,29 +82,45 @@ export const createResponseMessage = (source) =>
83
82
  value,
84
83
  error,
85
84
  });
86
- export const createIsHandshakeMessage = (id = '') =>
87
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
88
- (data) => data &&
89
- typeof data === 'object' &&
90
- typeof data.id === 'string' &&
91
- ((!id && data.id.match(/^wi/)) || (id && id === data.id));
92
- export const createIsMessage = (target) =>
93
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
- (data) => data &&
95
- typeof data === 'object' &&
96
- typeof data.id === 'string' &&
97
- target === data.target;
85
+ export const createIsHandshakeMessage = (id = '') => (data) => {
86
+ if (data == null || typeof data !== 'object')
87
+ return false;
88
+ const dataId = data.id;
89
+ if (typeof dataId !== 'string')
90
+ return false;
91
+ return id ? id === dataId : /^wi/.test(dataId);
92
+ };
93
+ export const createIsMessage = (target) => (data) => {
94
+ if (data == null || typeof data !== 'object')
95
+ return false;
96
+ const { id, target: dataTarget } = data;
97
+ return typeof id === 'string' && target === dataTarget;
98
+ };
98
99
  export const resolveOrTimeout = ({ handler, timeout, timeoutError = `Async operation didn't complete in ${timeout}ms.`, onTimeout, }) => {
99
100
  const promise = typeof handler === 'function' ? new Promise(handler) : handler;
100
- return timeout
101
- ? Promise.race([
102
- promise,
103
- new Promise((_, rej) => setTimeout(() => {
104
- rej(timeoutError);
105
- onTimeout && onTimeout(timeoutError);
106
- }, timeout)),
107
- ])
108
- : promise;
101
+ if (!timeout) {
102
+ return promise;
103
+ }
104
+ let timeoutHandle;
105
+ const timeoutPromise = new Promise((_, rej) => {
106
+ timeoutHandle = setTimeout(() => {
107
+ rej(timeoutError);
108
+ // Call onTimeout AFTER rejecting so the race is already settled.
109
+ // This prevents the double-rejection issue in initialize's onTimeout handler.
110
+ onTimeout && onTimeout(timeoutError);
111
+ }, timeout);
112
+ });
113
+ // Clear the timeout if the main promise wins the race
114
+ return Promise.race([
115
+ promise.then((v) => {
116
+ clearTimeout(timeoutHandle);
117
+ return v;
118
+ }, (e) => {
119
+ clearTimeout(timeoutHandle);
120
+ throw e;
121
+ }),
122
+ timeoutPromise,
123
+ ]);
109
124
  };
110
- export const getMessageEventData = (event) => event instanceof Event ? event.data : event;
125
+ export const getMessageEventData = (event) => event != null && typeof event === 'object' && 'data' in event ? event.data : event;
111
126
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../packages/deferred-data-access/interface/src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../packages/deferred-data-access/interface/src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,18 +1,19 @@
1
1
  {
2
2
  "name": "@actualwave/deferred-data-access",
3
- "version": "2.0.0",
4
- "main": "dist/deferred-data-access.js",
5
- "module": "index.js",
3
+ "version": "2.1.1",
4
+ "main": "index.js",
5
+ "module": "index.es.js",
6
6
  "types": "index.d.ts",
7
7
  "scripts": {
8
8
  "build": "tsc --project tsconfig.es.json && rollup -c rollup.config.js",
9
- "postinstall": "npm run build"
9
+ "test": "jest",
10
+ "test:coverage": "jest --coverage"
10
11
  },
12
+ "type": "module",
11
13
  "publishConfig": {
12
14
  "directory": "../../dist/deferred-data-access"
13
15
  },
14
16
  "dependencies": {
15
- "@actualwave/has-own": "^0.0.3",
16
- "@actualwave/weak-storage": "^0.1.0"
17
+ "@actualwave/weak-storage": "0.2.0"
17
18
  }
18
19
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packages/deferred-data-access/proxy/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,144 @@
1
+ import { CommandChain } from '@actualwave/deferred-data-access/command';
2
+
3
+ var ProxyCommand;
4
+ (function (ProxyCommand) {
5
+ ProxyCommand["GET"] = "P:get";
6
+ ProxyCommand["SET"] = "P:set";
7
+ ProxyCommand["APPLY"] = "P:apply";
8
+ ProxyCommand["DELETE_PROPERTY"] = "P:del";
9
+ // If proxy works in lazy mode and APPLY command has previous GET command, this will be generated.
10
+ ProxyCommand["METHOD_CALL"] = "P:call";
11
+ })(ProxyCommand || (ProxyCommand = {}));
12
+ const generateProxyCommand = (head, type, name, value, context, lazy) => {
13
+ if (type === ProxyCommand.APPLY && lazy && head?.type === ProxyCommand.GET) {
14
+ return new CommandChain(head.prev, ProxyCommand.METHOD_CALL, head.name, value, head.context);
15
+ }
16
+ return new CommandChain(head, type, name, value, context);
17
+ };
18
+ const getMethodName = ({ prev }) => prev?.name;
19
+ const getMethodCallContext = ({ prev }) => prev?.context;
20
+
21
+ const EXCLUSIONS = {
22
+ /*
23
+ INFO arguments and caller were included because they are required function properties
24
+ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/arguments
25
+ */
26
+ arguments: true,
27
+ caller: true,
28
+ prototype: true,
29
+ };
30
+ const API_PROP = Symbol('P:api');
31
+
32
+ const wrapWithProxy = (
33
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
34
+ target, traps, api = {}) => {
35
+ // Always use a function as the wrapper so the Proxy can intercept `apply`.
36
+ // For non-function targets the wrapper body is intentionally empty — it is
37
+ // never actually called; the apply trap intercepts all invocations first.
38
+ const wrapper = Object.assign(typeof target === 'function'
39
+ ? function $RequestFn(...args) {
40
+ return target.apply(this, args);
41
+ }
42
+ : function $Request() {
43
+ /* intentionally empty — apply trap handles all calls */
44
+ }, {
45
+ target,
46
+ [API_PROP]: { getTarget: () => target, ...api },
47
+ });
48
+ return new Proxy(wrapper, traps);
49
+ };
50
+ const isWrappedWithProxy = (obj) => obj != null && typeof obj === 'object' || typeof obj === 'function'
51
+ ? !!(obj && obj[API_PROP])
52
+ : false;
53
+ const unwrapProxy = (obj) => {
54
+ if (obj != null && obj[API_PROP]) {
55
+ return obj[API_PROP].getTarget();
56
+ }
57
+ return obj;
58
+ };
59
+
60
+ const isNameExcluded = (name) => name === API_PROP || Object.hasOwn(EXCLUSIONS, name);
61
+ const isNameSymbol = (name) => typeof name === 'symbol';
62
+ /**
63
+ * Walks a CommandChain and resolves it against a live target.
64
+ * Only GET and APPLY commands are supported — all other command types
65
+ * (SET, DELETE_PROPERTY, METHOD_CALL) are write/side-effect operations
66
+ * that cannot be replayed safely and will throw.
67
+ */
68
+ const followCommandChain = async (head,
69
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
+ context) => {
71
+ let target = context;
72
+ if (context === undefined) {
73
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
+ target = head.prev
75
+ ? await followCommandChain(head.prev)
76
+ : await head.context;
77
+ }
78
+ const { type, name, value } = head;
79
+ switch (type) {
80
+ case ProxyCommand.GET:
81
+ return target[name];
82
+ case ProxyCommand.APPLY:
83
+ return target.apply(getMethodCallContext(head), value);
84
+ default:
85
+ throw new Error(`Command "${type}" cannot be followed. Only ProxyCommand.GET and ProxyCommand.APPLY are supported by followCommandChain.`);
86
+ }
87
+ };
88
+
89
+ const createGetTrap = (handler) => (wrapper, name) => {
90
+ const { target } = wrapper;
91
+ if (isNameExcluded(name)) {
92
+ return wrapper[name];
93
+ }
94
+ // We expect that user of the lib will wrap with Proxy explicitly whatever they want
95
+ return handler(ProxyCommand.GET, name, undefined, target);
96
+ };
97
+ const createApplyTrap = (handler) => ({ target }, thisValue, args) => {
98
+ // thisValue is being ignored for now
99
+ // target is a function that should be applied
100
+ return handler(ProxyCommand.APPLY, undefined, args, target);
101
+ };
102
+ const createSetTrap = (handler) => ({ target }, name, value) => {
103
+ if (isNameExcluded(name)) {
104
+ return false;
105
+ }
106
+ handler(ProxyCommand.SET, name, value, target);
107
+ return true;
108
+ };
109
+ const createDeletePropertyTrap = (handler) => (wrapper, name) => {
110
+ if (isNameExcluded(name)) {
111
+ return false;
112
+ }
113
+ handler(ProxyCommand.DELETE_PROPERTY, name, undefined, wrapper.target);
114
+ return true;
115
+ };
116
+ const proxyHasTrap = (wrapper, name) => {
117
+ if (isNameExcluded(name)) {
118
+ return wrapper[name];
119
+ }
120
+ // Because of this, Promise does not call ProxyWrapper.then() and just returns it.
121
+ // If changed to true, it will subscribe to ProxyWrapper.then() and wait for it to resolve.
122
+ return false;
123
+ };
124
+ const proxyOwnKeysTrap = () => Object.getOwnPropertyNames(EXCLUSIONS);
125
+ const proxyGetOwnPropertyDescriptorTrap = (wrapper, name) => {
126
+ if (isNameExcluded(name)) {
127
+ return Object.getOwnPropertyDescriptor(wrapper, name);
128
+ }
129
+ return Object.getOwnPropertyDescriptor(wrapper.target, name);
130
+ };
131
+ const createProxyTrapsObject = (handler) => ({
132
+ get: createGetTrap(handler),
133
+ apply: createApplyTrap(handler),
134
+ set: createSetTrap(handler),
135
+ deleteProperty: createDeletePropertyTrap(handler),
136
+ has: proxyHasTrap,
137
+ ownKeys: proxyOwnKeysTrap,
138
+ // NOTE: `enumerate` trap was removed from the ES Proxy spec and is a no-op
139
+ // in all modern runtimes — removed to avoid confusion.
140
+ getOwnPropertyDescriptor: proxyGetOwnPropertyDescriptorTrap,
141
+ });
142
+
143
+ export { ProxyCommand, createProxyTrapsObject, followCommandChain, generateProxyCommand, getMethodCallContext, getMethodName, isNameExcluded, isNameSymbol, isWrappedWithProxy, unwrapProxy, wrapWithProxy };
144
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../../../../packages/deferred-data-access/proxy/src/command.ts","../../../../../../packages/deferred-data-access/proxy/src/types.ts","../../../../../../packages/deferred-data-access/proxy/src/proxy.ts","../../../../../../packages/deferred-data-access/proxy/src/utils.ts","../../../../../../packages/deferred-data-access/proxy/src/traps.ts"],"sourcesContent":[null,null,null,null,null],"names":[],"mappings":"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"}
package/proxy/index.js CHANGED
@@ -1,5 +1,155 @@
1
- export * from './src/command';
2
- export * from './src/proxy';
3
- export * from './src/traps';
4
- export * from './src/utils';
5
- //# sourceMappingURL=index.js.map
1
+ 'use strict';
2
+
3
+ var command = require('@actualwave/deferred-data-access/command');
4
+
5
+ exports.ProxyCommand = void 0;
6
+ (function (ProxyCommand) {
7
+ ProxyCommand["GET"] = "P:get";
8
+ ProxyCommand["SET"] = "P:set";
9
+ ProxyCommand["APPLY"] = "P:apply";
10
+ ProxyCommand["DELETE_PROPERTY"] = "P:del";
11
+ // If proxy works in lazy mode and APPLY command has previous GET command, this will be generated.
12
+ ProxyCommand["METHOD_CALL"] = "P:call";
13
+ })(exports.ProxyCommand || (exports.ProxyCommand = {}));
14
+ const generateProxyCommand = (head, type, name, value, context, lazy) => {
15
+ if (type === exports.ProxyCommand.APPLY && lazy && head?.type === exports.ProxyCommand.GET) {
16
+ return new command.CommandChain(head.prev, exports.ProxyCommand.METHOD_CALL, head.name, value, head.context);
17
+ }
18
+ return new command.CommandChain(head, type, name, value, context);
19
+ };
20
+ const getMethodName = ({ prev }) => prev?.name;
21
+ const getMethodCallContext = ({ prev }) => prev?.context;
22
+
23
+ const EXCLUSIONS = {
24
+ /*
25
+ INFO arguments and caller were included because they are required function properties
26
+ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/arguments
27
+ */
28
+ arguments: true,
29
+ caller: true,
30
+ prototype: true,
31
+ };
32
+ const API_PROP = Symbol('P:api');
33
+
34
+ const wrapWithProxy = (
35
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
36
+ target, traps, api = {}) => {
37
+ // Always use a function as the wrapper so the Proxy can intercept `apply`.
38
+ // For non-function targets the wrapper body is intentionally empty — it is
39
+ // never actually called; the apply trap intercepts all invocations first.
40
+ const wrapper = Object.assign(typeof target === 'function'
41
+ ? function $RequestFn(...args) {
42
+ return target.apply(this, args);
43
+ }
44
+ : function $Request() {
45
+ /* intentionally empty — apply trap handles all calls */
46
+ }, {
47
+ target,
48
+ [API_PROP]: { getTarget: () => target, ...api },
49
+ });
50
+ return new Proxy(wrapper, traps);
51
+ };
52
+ const isWrappedWithProxy = (obj) => obj != null && typeof obj === 'object' || typeof obj === 'function'
53
+ ? !!(obj && obj[API_PROP])
54
+ : false;
55
+ const unwrapProxy = (obj) => {
56
+ if (obj != null && obj[API_PROP]) {
57
+ return obj[API_PROP].getTarget();
58
+ }
59
+ return obj;
60
+ };
61
+
62
+ const isNameExcluded = (name) => name === API_PROP || Object.hasOwn(EXCLUSIONS, name);
63
+ const isNameSymbol = (name) => typeof name === 'symbol';
64
+ /**
65
+ * Walks a CommandChain and resolves it against a live target.
66
+ * Only GET and APPLY commands are supported — all other command types
67
+ * (SET, DELETE_PROPERTY, METHOD_CALL) are write/side-effect operations
68
+ * that cannot be replayed safely and will throw.
69
+ */
70
+ const followCommandChain = async (head,
71
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
72
+ context) => {
73
+ let target = context;
74
+ if (context === undefined) {
75
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
76
+ target = head.prev
77
+ ? await followCommandChain(head.prev)
78
+ : await head.context;
79
+ }
80
+ const { type, name, value } = head;
81
+ switch (type) {
82
+ case exports.ProxyCommand.GET:
83
+ return target[name];
84
+ case exports.ProxyCommand.APPLY:
85
+ return target.apply(getMethodCallContext(head), value);
86
+ default:
87
+ throw new Error(`Command "${type}" cannot be followed. Only ProxyCommand.GET and ProxyCommand.APPLY are supported by followCommandChain.`);
88
+ }
89
+ };
90
+
91
+ const createGetTrap = (handler) => (wrapper, name) => {
92
+ const { target } = wrapper;
93
+ if (isNameExcluded(name)) {
94
+ return wrapper[name];
95
+ }
96
+ // We expect that user of the lib will wrap with Proxy explicitly whatever they want
97
+ return handler(exports.ProxyCommand.GET, name, undefined, target);
98
+ };
99
+ const createApplyTrap = (handler) => ({ target }, thisValue, args) => {
100
+ // thisValue is being ignored for now
101
+ // target is a function that should be applied
102
+ return handler(exports.ProxyCommand.APPLY, undefined, args, target);
103
+ };
104
+ const createSetTrap = (handler) => ({ target }, name, value) => {
105
+ if (isNameExcluded(name)) {
106
+ return false;
107
+ }
108
+ handler(exports.ProxyCommand.SET, name, value, target);
109
+ return true;
110
+ };
111
+ const createDeletePropertyTrap = (handler) => (wrapper, name) => {
112
+ if (isNameExcluded(name)) {
113
+ return false;
114
+ }
115
+ handler(exports.ProxyCommand.DELETE_PROPERTY, name, undefined, wrapper.target);
116
+ return true;
117
+ };
118
+ const proxyHasTrap = (wrapper, name) => {
119
+ if (isNameExcluded(name)) {
120
+ return wrapper[name];
121
+ }
122
+ // Because of this, Promise does not call ProxyWrapper.then() and just returns it.
123
+ // If changed to true, it will subscribe to ProxyWrapper.then() and wait for it to resolve.
124
+ return false;
125
+ };
126
+ const proxyOwnKeysTrap = () => Object.getOwnPropertyNames(EXCLUSIONS);
127
+ const proxyGetOwnPropertyDescriptorTrap = (wrapper, name) => {
128
+ if (isNameExcluded(name)) {
129
+ return Object.getOwnPropertyDescriptor(wrapper, name);
130
+ }
131
+ return Object.getOwnPropertyDescriptor(wrapper.target, name);
132
+ };
133
+ const createProxyTrapsObject = (handler) => ({
134
+ get: createGetTrap(handler),
135
+ apply: createApplyTrap(handler),
136
+ set: createSetTrap(handler),
137
+ deleteProperty: createDeletePropertyTrap(handler),
138
+ has: proxyHasTrap,
139
+ ownKeys: proxyOwnKeysTrap,
140
+ // NOTE: `enumerate` trap was removed from the ES Proxy spec and is a no-op
141
+ // in all modern runtimes — removed to avoid confusion.
142
+ getOwnPropertyDescriptor: proxyGetOwnPropertyDescriptorTrap,
143
+ });
144
+
145
+ exports.createProxyTrapsObject = createProxyTrapsObject;
146
+ exports.followCommandChain = followCommandChain;
147
+ exports.generateProxyCommand = generateProxyCommand;
148
+ exports.getMethodCallContext = getMethodCallContext;
149
+ exports.getMethodName = getMethodName;
150
+ exports.isNameExcluded = isNameExcluded;
151
+ exports.isNameSymbol = isNameSymbol;
152
+ exports.isWrappedWithProxy = isWrappedWithProxy;
153
+ exports.unwrapProxy = unwrapProxy;
154
+ exports.wrapWithProxy = wrapWithProxy;
155
+ //# sourceMappingURL=index.js.map