@fluidframework/core-interfaces 0.39.8 → 0.41.0-43885

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 (61) hide show
  1. package/api-extractor.json +9 -1
  2. package/api-report/core-interfaces.api.md +246 -0
  3. package/dist/fluidObject.d.ts +36 -5
  4. package/dist/fluidObject.d.ts.map +1 -1
  5. package/dist/fluidObject.js +0 -1
  6. package/dist/fluidObject.js.map +1 -1
  7. package/dist/fluidPackage.d.ts +3 -3
  8. package/dist/fluidPackage.d.ts.map +1 -1
  9. package/dist/fluidPackage.js.map +1 -1
  10. package/dist/handles.d.ts +5 -5
  11. package/dist/handles.d.ts.map +1 -1
  12. package/dist/handles.js.map +1 -1
  13. package/dist/index.d.ts +1 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +1 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/provider.d.ts +64 -0
  18. package/dist/provider.d.ts.map +1 -0
  19. package/dist/provider.js +7 -0
  20. package/dist/provider.js.map +1 -0
  21. package/dist/serializer.d.ts +10 -0
  22. package/dist/serializer.d.ts.map +1 -1
  23. package/dist/serializer.js.map +1 -1
  24. package/lib/fluidObject.d.ts +36 -5
  25. package/lib/fluidObject.d.ts.map +1 -1
  26. package/lib/fluidObject.js +0 -1
  27. package/lib/fluidObject.js.map +1 -1
  28. package/lib/fluidPackage.d.ts +3 -3
  29. package/lib/fluidPackage.d.ts.map +1 -1
  30. package/lib/fluidPackage.js.map +1 -1
  31. package/lib/handles.d.ts +5 -5
  32. package/lib/handles.d.ts.map +1 -1
  33. package/lib/handles.js.map +1 -1
  34. package/lib/index.d.ts +1 -0
  35. package/lib/index.d.ts.map +1 -1
  36. package/lib/index.js +1 -0
  37. package/lib/index.js.map +1 -1
  38. package/lib/provider.d.ts +64 -0
  39. package/lib/provider.d.ts.map +1 -0
  40. package/lib/provider.js +6 -0
  41. package/lib/provider.js.map +1 -0
  42. package/lib/serializer.d.ts +10 -0
  43. package/lib/serializer.d.ts.map +1 -1
  44. package/lib/serializer.js.map +1 -1
  45. package/lib/test/types/validate0.39.8.d.ts +2 -0
  46. package/lib/test/types/validate0.39.8.d.ts.map +1 -0
  47. package/lib/test/types/validate0.39.8.js +72 -0
  48. package/lib/test/types/validate0.39.8.js.map +1 -0
  49. package/lib/test/types/validate0.40.0.d.ts +2 -0
  50. package/lib/test/types/validate0.40.0.d.ts.map +1 -0
  51. package/lib/test/types/validate0.40.0.js +72 -0
  52. package/lib/test/types/validate0.40.0.js.map +1 -0
  53. package/package.json +26 -7
  54. package/src/fluidObject.ts +39 -17
  55. package/src/fluidPackage.ts +5 -3
  56. package/src/handles.ts +5 -5
  57. package/src/index.ts +1 -0
  58. package/src/provider.ts +70 -0
  59. package/src/serializer.ts +11 -0
  60. package/test-d/index.test-d.ts +103 -0
  61. package/tsconfig.json +3 -2
@@ -0,0 +1,72 @@
1
+ use_current_InterfaceDeclaration_IFluidCodeDetails(get_old_InterfaceDeclaration_IFluidCodeDetails());
2
+ use_old_InterfaceDeclaration_IFluidCodeDetails(get_current_InterfaceDeclaration_IFluidCodeDetails());
3
+ use_current_VariableDeclaration_IFluidCodeDetailsComparer(get_old_VariableDeclaration_IFluidCodeDetailsComparer());
4
+ use_old_VariableDeclaration_IFluidCodeDetailsComparer(get_current_VariableDeclaration_IFluidCodeDetailsComparer());
5
+ use_current_InterfaceDeclaration_IFluidCodeDetailsComparer(get_old_InterfaceDeclaration_IFluidCodeDetailsComparer());
6
+ use_old_InterfaceDeclaration_IFluidCodeDetailsComparer(get_current_InterfaceDeclaration_IFluidCodeDetailsComparer());
7
+ use_current_InterfaceDeclaration_IFluidCodeDetailsConfig(get_old_InterfaceDeclaration_IFluidCodeDetailsConfig());
8
+ use_old_InterfaceDeclaration_IFluidCodeDetailsConfig(get_current_InterfaceDeclaration_IFluidCodeDetailsConfig());
9
+ use_current_VariableDeclaration_IFluidConfiguration(get_old_VariableDeclaration_IFluidConfiguration());
10
+ use_old_VariableDeclaration_IFluidConfiguration(get_current_VariableDeclaration_IFluidConfiguration());
11
+ use_current_InterfaceDeclaration_IFluidConfiguration(get_old_InterfaceDeclaration_IFluidConfiguration());
12
+ use_old_InterfaceDeclaration_IFluidConfiguration(get_current_InterfaceDeclaration_IFluidConfiguration());
13
+ use_current_VariableDeclaration_IFluidHandle(get_old_VariableDeclaration_IFluidHandle());
14
+ use_old_VariableDeclaration_IFluidHandle(get_current_VariableDeclaration_IFluidHandle());
15
+ use_current_InterfaceDeclaration_IFluidHandle(get_old_InterfaceDeclaration_IFluidHandle());
16
+ use_old_InterfaceDeclaration_IFluidHandle(get_current_InterfaceDeclaration_IFluidHandle());
17
+ use_current_VariableDeclaration_IFluidHandleContext(get_old_VariableDeclaration_IFluidHandleContext());
18
+ use_old_VariableDeclaration_IFluidHandleContext(get_current_VariableDeclaration_IFluidHandleContext());
19
+ use_current_InterfaceDeclaration_IFluidHandleContext(get_old_InterfaceDeclaration_IFluidHandleContext());
20
+ use_old_InterfaceDeclaration_IFluidHandleContext(get_current_InterfaceDeclaration_IFluidHandleContext());
21
+ use_current_VariableDeclaration_IFluidLoadable(get_old_VariableDeclaration_IFluidLoadable());
22
+ use_old_VariableDeclaration_IFluidLoadable(get_current_VariableDeclaration_IFluidLoadable());
23
+ use_current_InterfaceDeclaration_IFluidLoadable(get_old_InterfaceDeclaration_IFluidLoadable());
24
+ use_old_InterfaceDeclaration_IFluidLoadable(get_current_InterfaceDeclaration_IFluidLoadable());
25
+ use_current_InterfaceDeclaration_IFluidObject(get_old_InterfaceDeclaration_IFluidObject());
26
+ use_old_InterfaceDeclaration_IFluidObject(get_current_InterfaceDeclaration_IFluidObject());
27
+ use_current_InterfaceDeclaration_IFluidPackage(get_old_InterfaceDeclaration_IFluidPackage());
28
+ use_old_InterfaceDeclaration_IFluidPackage(get_current_InterfaceDeclaration_IFluidPackage());
29
+ use_current_InterfaceDeclaration_IFluidPackageEnvironment(get_old_InterfaceDeclaration_IFluidPackageEnvironment());
30
+ use_old_InterfaceDeclaration_IFluidPackageEnvironment(get_current_InterfaceDeclaration_IFluidPackageEnvironment());
31
+ use_current_VariableDeclaration_IFluidRouter(get_old_VariableDeclaration_IFluidRouter());
32
+ use_old_VariableDeclaration_IFluidRouter(get_current_VariableDeclaration_IFluidRouter());
33
+ use_current_InterfaceDeclaration_IFluidRouter(get_old_InterfaceDeclaration_IFluidRouter());
34
+ use_old_InterfaceDeclaration_IFluidRouter(get_current_InterfaceDeclaration_IFluidRouter());
35
+ use_current_VariableDeclaration_IFluidRunnable(get_old_VariableDeclaration_IFluidRunnable());
36
+ use_old_VariableDeclaration_IFluidRunnable(get_current_VariableDeclaration_IFluidRunnable());
37
+ use_current_InterfaceDeclaration_IFluidRunnable(get_old_InterfaceDeclaration_IFluidRunnable());
38
+ use_old_InterfaceDeclaration_IFluidRunnable(get_current_InterfaceDeclaration_IFluidRunnable());
39
+ use_current_VariableDeclaration_IFluidSerializer(get_old_VariableDeclaration_IFluidSerializer());
40
+ use_old_VariableDeclaration_IFluidSerializer(get_current_VariableDeclaration_IFluidSerializer());
41
+ use_current_InterfaceDeclaration_IFluidSerializer(get_old_InterfaceDeclaration_IFluidSerializer());
42
+ use_old_InterfaceDeclaration_IFluidSerializer(get_current_InterfaceDeclaration_IFluidSerializer());
43
+ use_current_InterfaceDeclaration_IProvideFluidCodeDetailsComparer(get_old_InterfaceDeclaration_IProvideFluidCodeDetailsComparer());
44
+ use_old_InterfaceDeclaration_IProvideFluidCodeDetailsComparer(get_current_InterfaceDeclaration_IProvideFluidCodeDetailsComparer());
45
+ use_current_InterfaceDeclaration_IProvideFluidConfiguration(get_old_InterfaceDeclaration_IProvideFluidConfiguration());
46
+ use_old_InterfaceDeclaration_IProvideFluidConfiguration(get_current_InterfaceDeclaration_IProvideFluidConfiguration());
47
+ use_current_InterfaceDeclaration_IProvideFluidHandle(get_old_InterfaceDeclaration_IProvideFluidHandle());
48
+ use_old_InterfaceDeclaration_IProvideFluidHandle(get_current_InterfaceDeclaration_IProvideFluidHandle());
49
+ use_current_InterfaceDeclaration_IProvideFluidHandleContext(get_old_InterfaceDeclaration_IProvideFluidHandleContext());
50
+ use_old_InterfaceDeclaration_IProvideFluidHandleContext(get_current_InterfaceDeclaration_IProvideFluidHandleContext());
51
+ use_current_InterfaceDeclaration_IProvideFluidLoadable(get_old_InterfaceDeclaration_IProvideFluidLoadable());
52
+ use_old_InterfaceDeclaration_IProvideFluidLoadable(get_current_InterfaceDeclaration_IProvideFluidLoadable());
53
+ use_current_InterfaceDeclaration_IProvideFluidRouter(get_old_InterfaceDeclaration_IProvideFluidRouter());
54
+ use_old_InterfaceDeclaration_IProvideFluidRouter(get_current_InterfaceDeclaration_IProvideFluidRouter());
55
+ use_current_InterfaceDeclaration_IProvideFluidRunnable(get_old_InterfaceDeclaration_IProvideFluidRunnable());
56
+ use_old_InterfaceDeclaration_IProvideFluidRunnable(get_current_InterfaceDeclaration_IProvideFluidRunnable());
57
+ use_current_InterfaceDeclaration_IProvideFluidSerializer(get_old_InterfaceDeclaration_IProvideFluidSerializer());
58
+ use_old_InterfaceDeclaration_IProvideFluidSerializer(get_current_InterfaceDeclaration_IProvideFluidSerializer());
59
+ use_current_InterfaceDeclaration_IRequest(get_old_InterfaceDeclaration_IRequest());
60
+ use_old_InterfaceDeclaration_IRequest(get_current_InterfaceDeclaration_IRequest());
61
+ use_current_InterfaceDeclaration_IRequestHeader(get_old_InterfaceDeclaration_IRequestHeader());
62
+ use_old_InterfaceDeclaration_IRequestHeader(get_current_InterfaceDeclaration_IRequestHeader());
63
+ use_current_InterfaceDeclaration_IResponse(get_old_InterfaceDeclaration_IResponse());
64
+ use_old_InterfaceDeclaration_IResponse(get_current_InterfaceDeclaration_IResponse());
65
+ use_current_InterfaceDeclaration_ISerializedHandle(get_old_InterfaceDeclaration_ISerializedHandle());
66
+ use_old_InterfaceDeclaration_ISerializedHandle(get_current_InterfaceDeclaration_ISerializedHandle());
67
+ use_current_VariableDeclaration_isFluidCodeDetails(get_old_VariableDeclaration_isFluidCodeDetails());
68
+ use_old_VariableDeclaration_isFluidCodeDetails(get_current_VariableDeclaration_isFluidCodeDetails());
69
+ use_current_VariableDeclaration_isFluidPackage(get_old_VariableDeclaration_isFluidPackage());
70
+ use_old_VariableDeclaration_isFluidPackage(get_current_VariableDeclaration_isFluidPackage());
71
+ export {};
72
+ //# sourceMappingURL=validate0.40.0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate0.40.0.js","sourceRoot":"","sources":["../../../src/test/types/validate0.40.0.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/*\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n * Generated by fluid-type-validator in @fluidframework/build-tools.\n */\nimport * as old from \"@fluidframework/core-interfaces-0.40.0\";\nimport * as current from \"../../index\";\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidCodeDetails\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidCodeDetails():\n old.IFluidCodeDetails;\ndeclare function use_current_InterfaceDeclaration_IFluidCodeDetails(\n use: current.IFluidCodeDetails);\nuse_current_InterfaceDeclaration_IFluidCodeDetails(\n get_old_InterfaceDeclaration_IFluidCodeDetails());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidCodeDetails\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidCodeDetails():\n current.IFluidCodeDetails;\ndeclare function use_old_InterfaceDeclaration_IFluidCodeDetails(\n use: old.IFluidCodeDetails);\nuse_old_InterfaceDeclaration_IFluidCodeDetails(\n get_current_InterfaceDeclaration_IFluidCodeDetails());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidCodeDetailsComparer\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_IFluidCodeDetailsComparer():\n typeof old.IFluidCodeDetailsComparer;\ndeclare function use_current_VariableDeclaration_IFluidCodeDetailsComparer(\n use: typeof current.IFluidCodeDetailsComparer);\nuse_current_VariableDeclaration_IFluidCodeDetailsComparer(\n get_old_VariableDeclaration_IFluidCodeDetailsComparer());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidCodeDetailsComparer\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_IFluidCodeDetailsComparer():\n typeof current.IFluidCodeDetailsComparer;\ndeclare function use_old_VariableDeclaration_IFluidCodeDetailsComparer(\n use: typeof old.IFluidCodeDetailsComparer);\nuse_old_VariableDeclaration_IFluidCodeDetailsComparer(\n get_current_VariableDeclaration_IFluidCodeDetailsComparer());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidCodeDetailsComparer\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidCodeDetailsComparer():\n old.IFluidCodeDetailsComparer;\ndeclare function use_current_InterfaceDeclaration_IFluidCodeDetailsComparer(\n use: current.IFluidCodeDetailsComparer);\nuse_current_InterfaceDeclaration_IFluidCodeDetailsComparer(\n get_old_InterfaceDeclaration_IFluidCodeDetailsComparer());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidCodeDetailsComparer\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidCodeDetailsComparer():\n current.IFluidCodeDetailsComparer;\ndeclare function use_old_InterfaceDeclaration_IFluidCodeDetailsComparer(\n use: old.IFluidCodeDetailsComparer);\nuse_old_InterfaceDeclaration_IFluidCodeDetailsComparer(\n get_current_InterfaceDeclaration_IFluidCodeDetailsComparer());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidCodeDetailsConfig\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidCodeDetailsConfig():\n old.IFluidCodeDetailsConfig;\ndeclare function use_current_InterfaceDeclaration_IFluidCodeDetailsConfig(\n use: current.IFluidCodeDetailsConfig);\nuse_current_InterfaceDeclaration_IFluidCodeDetailsConfig(\n get_old_InterfaceDeclaration_IFluidCodeDetailsConfig());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidCodeDetailsConfig\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidCodeDetailsConfig():\n current.IFluidCodeDetailsConfig;\ndeclare function use_old_InterfaceDeclaration_IFluidCodeDetailsConfig(\n use: old.IFluidCodeDetailsConfig);\nuse_old_InterfaceDeclaration_IFluidCodeDetailsConfig(\n get_current_InterfaceDeclaration_IFluidCodeDetailsConfig());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidConfiguration\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_IFluidConfiguration():\n typeof old.IFluidConfiguration;\ndeclare function use_current_VariableDeclaration_IFluidConfiguration(\n use: typeof current.IFluidConfiguration);\nuse_current_VariableDeclaration_IFluidConfiguration(\n get_old_VariableDeclaration_IFluidConfiguration());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidConfiguration\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_IFluidConfiguration():\n typeof current.IFluidConfiguration;\ndeclare function use_old_VariableDeclaration_IFluidConfiguration(\n use: typeof old.IFluidConfiguration);\nuse_old_VariableDeclaration_IFluidConfiguration(\n get_current_VariableDeclaration_IFluidConfiguration());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidConfiguration\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidConfiguration():\n old.IFluidConfiguration;\ndeclare function use_current_InterfaceDeclaration_IFluidConfiguration(\n use: current.IFluidConfiguration);\nuse_current_InterfaceDeclaration_IFluidConfiguration(\n get_old_InterfaceDeclaration_IFluidConfiguration());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidConfiguration\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidConfiguration():\n current.IFluidConfiguration;\ndeclare function use_old_InterfaceDeclaration_IFluidConfiguration(\n use: old.IFluidConfiguration);\nuse_old_InterfaceDeclaration_IFluidConfiguration(\n get_current_InterfaceDeclaration_IFluidConfiguration());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidHandle\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_IFluidHandle():\n typeof old.IFluidHandle;\ndeclare function use_current_VariableDeclaration_IFluidHandle(\n use: typeof current.IFluidHandle);\nuse_current_VariableDeclaration_IFluidHandle(\n get_old_VariableDeclaration_IFluidHandle());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidHandle\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_IFluidHandle():\n typeof current.IFluidHandle;\ndeclare function use_old_VariableDeclaration_IFluidHandle(\n use: typeof old.IFluidHandle);\nuse_old_VariableDeclaration_IFluidHandle(\n get_current_VariableDeclaration_IFluidHandle());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidHandle\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidHandle():\n old.IFluidHandle;\ndeclare function use_current_InterfaceDeclaration_IFluidHandle(\n use: current.IFluidHandle);\nuse_current_InterfaceDeclaration_IFluidHandle(\n get_old_InterfaceDeclaration_IFluidHandle());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidHandle\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidHandle():\n current.IFluidHandle;\ndeclare function use_old_InterfaceDeclaration_IFluidHandle(\n use: old.IFluidHandle);\nuse_old_InterfaceDeclaration_IFluidHandle(\n get_current_InterfaceDeclaration_IFluidHandle());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidHandleContext\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_IFluidHandleContext():\n typeof old.IFluidHandleContext;\ndeclare function use_current_VariableDeclaration_IFluidHandleContext(\n use: typeof current.IFluidHandleContext);\nuse_current_VariableDeclaration_IFluidHandleContext(\n get_old_VariableDeclaration_IFluidHandleContext());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidHandleContext\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_IFluidHandleContext():\n typeof current.IFluidHandleContext;\ndeclare function use_old_VariableDeclaration_IFluidHandleContext(\n use: typeof old.IFluidHandleContext);\nuse_old_VariableDeclaration_IFluidHandleContext(\n get_current_VariableDeclaration_IFluidHandleContext());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidHandleContext\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidHandleContext():\n old.IFluidHandleContext;\ndeclare function use_current_InterfaceDeclaration_IFluidHandleContext(\n use: current.IFluidHandleContext);\nuse_current_InterfaceDeclaration_IFluidHandleContext(\n get_old_InterfaceDeclaration_IFluidHandleContext());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidHandleContext\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidHandleContext():\n current.IFluidHandleContext;\ndeclare function use_old_InterfaceDeclaration_IFluidHandleContext(\n use: old.IFluidHandleContext);\nuse_old_InterfaceDeclaration_IFluidHandleContext(\n get_current_InterfaceDeclaration_IFluidHandleContext());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidLoadable\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_IFluidLoadable():\n typeof old.IFluidLoadable;\ndeclare function use_current_VariableDeclaration_IFluidLoadable(\n use: typeof current.IFluidLoadable);\nuse_current_VariableDeclaration_IFluidLoadable(\n get_old_VariableDeclaration_IFluidLoadable());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidLoadable\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_IFluidLoadable():\n typeof current.IFluidLoadable;\ndeclare function use_old_VariableDeclaration_IFluidLoadable(\n use: typeof old.IFluidLoadable);\nuse_old_VariableDeclaration_IFluidLoadable(\n get_current_VariableDeclaration_IFluidLoadable());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidLoadable\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidLoadable():\n old.IFluidLoadable;\ndeclare function use_current_InterfaceDeclaration_IFluidLoadable(\n use: current.IFluidLoadable);\nuse_current_InterfaceDeclaration_IFluidLoadable(\n get_old_InterfaceDeclaration_IFluidLoadable());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidLoadable\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidLoadable():\n current.IFluidLoadable;\ndeclare function use_old_InterfaceDeclaration_IFluidLoadable(\n use: old.IFluidLoadable);\nuse_old_InterfaceDeclaration_IFluidLoadable(\n get_current_InterfaceDeclaration_IFluidLoadable());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidObject\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidObject():\n old.IFluidObject;\ndeclare function use_current_InterfaceDeclaration_IFluidObject(\n use: current.IFluidObject);\nuse_current_InterfaceDeclaration_IFluidObject(\n get_old_InterfaceDeclaration_IFluidObject());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidObject\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidObject():\n current.IFluidObject;\ndeclare function use_old_InterfaceDeclaration_IFluidObject(\n use: old.IFluidObject);\nuse_old_InterfaceDeclaration_IFluidObject(\n get_current_InterfaceDeclaration_IFluidObject());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidPackage\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidPackage():\n old.IFluidPackage;\ndeclare function use_current_InterfaceDeclaration_IFluidPackage(\n use: current.IFluidPackage);\nuse_current_InterfaceDeclaration_IFluidPackage(\n get_old_InterfaceDeclaration_IFluidPackage());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidPackage\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidPackage():\n current.IFluidPackage;\ndeclare function use_old_InterfaceDeclaration_IFluidPackage(\n use: old.IFluidPackage);\nuse_old_InterfaceDeclaration_IFluidPackage(\n get_current_InterfaceDeclaration_IFluidPackage());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidPackageEnvironment\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidPackageEnvironment():\n old.IFluidPackageEnvironment;\ndeclare function use_current_InterfaceDeclaration_IFluidPackageEnvironment(\n use: current.IFluidPackageEnvironment);\nuse_current_InterfaceDeclaration_IFluidPackageEnvironment(\n get_old_InterfaceDeclaration_IFluidPackageEnvironment());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidPackageEnvironment\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidPackageEnvironment():\n current.IFluidPackageEnvironment;\ndeclare function use_old_InterfaceDeclaration_IFluidPackageEnvironment(\n use: old.IFluidPackageEnvironment);\nuse_old_InterfaceDeclaration_IFluidPackageEnvironment(\n get_current_InterfaceDeclaration_IFluidPackageEnvironment());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidRouter\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_IFluidRouter():\n typeof old.IFluidRouter;\ndeclare function use_current_VariableDeclaration_IFluidRouter(\n use: typeof current.IFluidRouter);\nuse_current_VariableDeclaration_IFluidRouter(\n get_old_VariableDeclaration_IFluidRouter());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidRouter\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_IFluidRouter():\n typeof current.IFluidRouter;\ndeclare function use_old_VariableDeclaration_IFluidRouter(\n use: typeof old.IFluidRouter);\nuse_old_VariableDeclaration_IFluidRouter(\n get_current_VariableDeclaration_IFluidRouter());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidRouter\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidRouter():\n old.IFluidRouter;\ndeclare function use_current_InterfaceDeclaration_IFluidRouter(\n use: current.IFluidRouter);\nuse_current_InterfaceDeclaration_IFluidRouter(\n get_old_InterfaceDeclaration_IFluidRouter());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidRouter\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidRouter():\n current.IFluidRouter;\ndeclare function use_old_InterfaceDeclaration_IFluidRouter(\n use: old.IFluidRouter);\nuse_old_InterfaceDeclaration_IFluidRouter(\n get_current_InterfaceDeclaration_IFluidRouter());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidRunnable\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_IFluidRunnable():\n typeof old.IFluidRunnable;\ndeclare function use_current_VariableDeclaration_IFluidRunnable(\n use: typeof current.IFluidRunnable);\nuse_current_VariableDeclaration_IFluidRunnable(\n get_old_VariableDeclaration_IFluidRunnable());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidRunnable\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_IFluidRunnable():\n typeof current.IFluidRunnable;\ndeclare function use_old_VariableDeclaration_IFluidRunnable(\n use: typeof old.IFluidRunnable);\nuse_old_VariableDeclaration_IFluidRunnable(\n get_current_VariableDeclaration_IFluidRunnable());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidRunnable\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidRunnable():\n old.IFluidRunnable;\ndeclare function use_current_InterfaceDeclaration_IFluidRunnable(\n use: current.IFluidRunnable);\nuse_current_InterfaceDeclaration_IFluidRunnable(\n get_old_InterfaceDeclaration_IFluidRunnable());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidRunnable\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidRunnable():\n current.IFluidRunnable;\ndeclare function use_old_InterfaceDeclaration_IFluidRunnable(\n use: old.IFluidRunnable);\nuse_old_InterfaceDeclaration_IFluidRunnable(\n get_current_InterfaceDeclaration_IFluidRunnable());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidSerializer\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_IFluidSerializer():\n typeof old.IFluidSerializer;\ndeclare function use_current_VariableDeclaration_IFluidSerializer(\n use: typeof current.IFluidSerializer);\nuse_current_VariableDeclaration_IFluidSerializer(\n get_old_VariableDeclaration_IFluidSerializer());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_IFluidSerializer\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_IFluidSerializer():\n typeof current.IFluidSerializer;\ndeclare function use_old_VariableDeclaration_IFluidSerializer(\n use: typeof old.IFluidSerializer);\nuse_old_VariableDeclaration_IFluidSerializer(\n get_current_VariableDeclaration_IFluidSerializer());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidSerializer\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidSerializer():\n old.IFluidSerializer;\ndeclare function use_current_InterfaceDeclaration_IFluidSerializer(\n use: current.IFluidSerializer);\nuse_current_InterfaceDeclaration_IFluidSerializer(\n get_old_InterfaceDeclaration_IFluidSerializer());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IFluidSerializer\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidSerializer():\n current.IFluidSerializer;\ndeclare function use_old_InterfaceDeclaration_IFluidSerializer(\n use: old.IFluidSerializer);\nuse_old_InterfaceDeclaration_IFluidSerializer(\n get_current_InterfaceDeclaration_IFluidSerializer());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidCodeDetailsComparer\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IProvideFluidCodeDetailsComparer():\n old.IProvideFluidCodeDetailsComparer;\ndeclare function use_current_InterfaceDeclaration_IProvideFluidCodeDetailsComparer(\n use: current.IProvideFluidCodeDetailsComparer);\nuse_current_InterfaceDeclaration_IProvideFluidCodeDetailsComparer(\n get_old_InterfaceDeclaration_IProvideFluidCodeDetailsComparer());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidCodeDetailsComparer\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IProvideFluidCodeDetailsComparer():\n current.IProvideFluidCodeDetailsComparer;\ndeclare function use_old_InterfaceDeclaration_IProvideFluidCodeDetailsComparer(\n use: old.IProvideFluidCodeDetailsComparer);\nuse_old_InterfaceDeclaration_IProvideFluidCodeDetailsComparer(\n get_current_InterfaceDeclaration_IProvideFluidCodeDetailsComparer());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidConfiguration\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IProvideFluidConfiguration():\n old.IProvideFluidConfiguration;\ndeclare function use_current_InterfaceDeclaration_IProvideFluidConfiguration(\n use: current.IProvideFluidConfiguration);\nuse_current_InterfaceDeclaration_IProvideFluidConfiguration(\n get_old_InterfaceDeclaration_IProvideFluidConfiguration());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidConfiguration\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IProvideFluidConfiguration():\n current.IProvideFluidConfiguration;\ndeclare function use_old_InterfaceDeclaration_IProvideFluidConfiguration(\n use: old.IProvideFluidConfiguration);\nuse_old_InterfaceDeclaration_IProvideFluidConfiguration(\n get_current_InterfaceDeclaration_IProvideFluidConfiguration());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidHandle\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IProvideFluidHandle():\n old.IProvideFluidHandle;\ndeclare function use_current_InterfaceDeclaration_IProvideFluidHandle(\n use: current.IProvideFluidHandle);\nuse_current_InterfaceDeclaration_IProvideFluidHandle(\n get_old_InterfaceDeclaration_IProvideFluidHandle());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidHandle\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IProvideFluidHandle():\n current.IProvideFluidHandle;\ndeclare function use_old_InterfaceDeclaration_IProvideFluidHandle(\n use: old.IProvideFluidHandle);\nuse_old_InterfaceDeclaration_IProvideFluidHandle(\n get_current_InterfaceDeclaration_IProvideFluidHandle());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidHandleContext\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IProvideFluidHandleContext():\n old.IProvideFluidHandleContext;\ndeclare function use_current_InterfaceDeclaration_IProvideFluidHandleContext(\n use: current.IProvideFluidHandleContext);\nuse_current_InterfaceDeclaration_IProvideFluidHandleContext(\n get_old_InterfaceDeclaration_IProvideFluidHandleContext());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidHandleContext\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IProvideFluidHandleContext():\n current.IProvideFluidHandleContext;\ndeclare function use_old_InterfaceDeclaration_IProvideFluidHandleContext(\n use: old.IProvideFluidHandleContext);\nuse_old_InterfaceDeclaration_IProvideFluidHandleContext(\n get_current_InterfaceDeclaration_IProvideFluidHandleContext());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidLoadable\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IProvideFluidLoadable():\n old.IProvideFluidLoadable;\ndeclare function use_current_InterfaceDeclaration_IProvideFluidLoadable(\n use: current.IProvideFluidLoadable);\nuse_current_InterfaceDeclaration_IProvideFluidLoadable(\n get_old_InterfaceDeclaration_IProvideFluidLoadable());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidLoadable\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IProvideFluidLoadable():\n current.IProvideFluidLoadable;\ndeclare function use_old_InterfaceDeclaration_IProvideFluidLoadable(\n use: old.IProvideFluidLoadable);\nuse_old_InterfaceDeclaration_IProvideFluidLoadable(\n get_current_InterfaceDeclaration_IProvideFluidLoadable());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidRouter\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IProvideFluidRouter():\n old.IProvideFluidRouter;\ndeclare function use_current_InterfaceDeclaration_IProvideFluidRouter(\n use: current.IProvideFluidRouter);\nuse_current_InterfaceDeclaration_IProvideFluidRouter(\n get_old_InterfaceDeclaration_IProvideFluidRouter());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidRouter\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IProvideFluidRouter():\n current.IProvideFluidRouter;\ndeclare function use_old_InterfaceDeclaration_IProvideFluidRouter(\n use: old.IProvideFluidRouter);\nuse_old_InterfaceDeclaration_IProvideFluidRouter(\n get_current_InterfaceDeclaration_IProvideFluidRouter());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidRunnable\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IProvideFluidRunnable():\n old.IProvideFluidRunnable;\ndeclare function use_current_InterfaceDeclaration_IProvideFluidRunnable(\n use: current.IProvideFluidRunnable);\nuse_current_InterfaceDeclaration_IProvideFluidRunnable(\n get_old_InterfaceDeclaration_IProvideFluidRunnable());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidRunnable\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IProvideFluidRunnable():\n current.IProvideFluidRunnable;\ndeclare function use_old_InterfaceDeclaration_IProvideFluidRunnable(\n use: old.IProvideFluidRunnable);\nuse_old_InterfaceDeclaration_IProvideFluidRunnable(\n get_current_InterfaceDeclaration_IProvideFluidRunnable());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidSerializer\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IProvideFluidSerializer():\n old.IProvideFluidSerializer;\ndeclare function use_current_InterfaceDeclaration_IProvideFluidSerializer(\n use: current.IProvideFluidSerializer);\nuse_current_InterfaceDeclaration_IProvideFluidSerializer(\n get_old_InterfaceDeclaration_IProvideFluidSerializer());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IProvideFluidSerializer\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IProvideFluidSerializer():\n current.IProvideFluidSerializer;\ndeclare function use_old_InterfaceDeclaration_IProvideFluidSerializer(\n use: old.IProvideFluidSerializer);\nuse_old_InterfaceDeclaration_IProvideFluidSerializer(\n get_current_InterfaceDeclaration_IProvideFluidSerializer());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IRequest\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IRequest():\n old.IRequest;\ndeclare function use_current_InterfaceDeclaration_IRequest(\n use: current.IRequest);\nuse_current_InterfaceDeclaration_IRequest(\n get_old_InterfaceDeclaration_IRequest());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IRequest\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IRequest():\n current.IRequest;\ndeclare function use_old_InterfaceDeclaration_IRequest(\n use: old.IRequest);\nuse_old_InterfaceDeclaration_IRequest(\n get_current_InterfaceDeclaration_IRequest());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IRequestHeader\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IRequestHeader():\n old.IRequestHeader;\ndeclare function use_current_InterfaceDeclaration_IRequestHeader(\n use: current.IRequestHeader);\nuse_current_InterfaceDeclaration_IRequestHeader(\n get_old_InterfaceDeclaration_IRequestHeader());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IRequestHeader\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IRequestHeader():\n current.IRequestHeader;\ndeclare function use_old_InterfaceDeclaration_IRequestHeader(\n use: old.IRequestHeader);\nuse_old_InterfaceDeclaration_IRequestHeader(\n get_current_InterfaceDeclaration_IRequestHeader());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IResponse\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IResponse():\n old.IResponse;\ndeclare function use_current_InterfaceDeclaration_IResponse(\n use: current.IResponse);\nuse_current_InterfaceDeclaration_IResponse(\n get_old_InterfaceDeclaration_IResponse());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_IResponse\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IResponse():\n current.IResponse;\ndeclare function use_old_InterfaceDeclaration_IResponse(\n use: old.IResponse);\nuse_old_InterfaceDeclaration_IResponse(\n get_current_InterfaceDeclaration_IResponse());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_ISerializedHandle\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_ISerializedHandle():\n old.ISerializedHandle;\ndeclare function use_current_InterfaceDeclaration_ISerializedHandle(\n use: current.ISerializedHandle);\nuse_current_InterfaceDeclaration_ISerializedHandle(\n get_old_InterfaceDeclaration_ISerializedHandle());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"InterfaceDeclaration_ISerializedHandle\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_ISerializedHandle():\n current.ISerializedHandle;\ndeclare function use_old_InterfaceDeclaration_ISerializedHandle(\n use: old.ISerializedHandle);\nuse_old_InterfaceDeclaration_ISerializedHandle(\n get_current_InterfaceDeclaration_ISerializedHandle());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_isFluidCodeDetails\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_isFluidCodeDetails():\n typeof old.isFluidCodeDetails;\ndeclare function use_current_VariableDeclaration_isFluidCodeDetails(\n use: typeof current.isFluidCodeDetails);\nuse_current_VariableDeclaration_isFluidCodeDetails(\n get_old_VariableDeclaration_isFluidCodeDetails());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_isFluidCodeDetails\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_isFluidCodeDetails():\n typeof current.isFluidCodeDetails;\ndeclare function use_old_VariableDeclaration_isFluidCodeDetails(\n use: typeof old.isFluidCodeDetails);\nuse_old_VariableDeclaration_isFluidCodeDetails(\n get_current_VariableDeclaration_isFluidCodeDetails());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_isFluidPackage\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_isFluidPackage():\n typeof old.isFluidPackage;\ndeclare function use_current_VariableDeclaration_isFluidPackage(\n use: typeof current.isFluidPackage);\nuse_current_VariableDeclaration_isFluidPackage(\n get_old_VariableDeclaration_isFluidPackage());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken.0.40.0:\n* \"VariableDeclaration_isFluidPackage\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_isFluidPackage():\n typeof current.isFluidPackage;\ndeclare function use_old_VariableDeclaration_isFluidPackage(\n use: typeof old.isFluidPackage);\nuse_old_VariableDeclaration_isFluidPackage(\n get_current_VariableDeclaration_isFluidPackage());\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/core-interfaces",
3
- "version": "0.39.8",
3
+ "version": "0.41.0-43885",
4
4
  "description": "Fluid object interfaces",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": "https://github.com/microsoft/FluidFramework",
@@ -11,30 +11,41 @@
11
11
  "module": "lib/index.js",
12
12
  "types": "dist/index.d.ts",
13
13
  "scripts": {
14
- "build": "concurrently npm:build:compile npm:lint",
14
+ "build": "npm run build:gen && concurrently npm:build:compile npm:lint && npm run build:docs",
15
15
  "build:compile": "concurrently npm:tsc npm:build:esnext",
16
- "build:docs": "api-extractor run --local && copyfiles -u 1 ./_api-extractor-temp/doc-models/* ../../../_api-extractor-temp/",
16
+ "build:docs": "api-extractor run --local --typescript-compiler-folder ./node_modules/typescript && copyfiles -u 1 ./_api-extractor-temp/doc-models/* ../../../_api-extractor-temp/",
17
17
  "build:esnext": "tsc --project ./tsconfig.esnext.json",
18
18
  "build:full": "npm run build",
19
19
  "build:full:compile": "npm run build:compile",
20
+ "build:gen": "npm run build:gen:typetests",
21
+ "build:gen:typetests": "fluid-type-validator -d .",
22
+ "ci:build": "npm run build:gen && npm run build:compile",
23
+ "ci:build:docs": "api-extractor run --typescript-compiler-folder ./node_modules/typescript && copyfiles -u 1 ./_api-extractor-temp/doc-models/* ../../../_api-extractor-temp/",
24
+ "ci:test": "echo No test for this package",
25
+ "ci:test:coverage": "echo No test for this package",
20
26
  "clean": "rimraf dist lib *.tsbuildinfo *.build.log",
21
27
  "eslint": "eslint --format stylish src",
22
28
  "eslint:fix": "eslint --format stylish src --fix",
23
29
  "lint": "npm run eslint",
24
30
  "lint:fix": "npm run eslint:fix",
31
+ "test": "npm run test:types",
32
+ "test:types": "tsd",
25
33
  "tsc": "tsc",
26
34
  "tsc:watch": "tsc --watch",
27
35
  "tsfmt": "tsfmt --verify",
28
36
  "tsfmt:fix": "tsfmt --replace"
29
37
  },
30
38
  "devDependencies": {
31
- "@fluidframework/build-common": "^0.22.0",
32
- "@fluidframework/eslint-config-fluid": "^0.23.0",
33
- "@microsoft/api-extractor": "^7.13.1",
39
+ "@fluidframework/build-common": "^0.23.0",
40
+ "@fluidframework/build-tools": "^0.2.43369",
41
+ "@fluidframework/core-interfaces-0.39.8": "npm:@fluidframework/core-interfaces@0.39.8",
42
+ "@fluidframework/core-interfaces-0.40.0": "npm:@fluidframework/core-interfaces@0.40.0",
43
+ "@fluidframework/eslint-config-fluid": "^0.24.0",
44
+ "@microsoft/api-extractor": "^7.16.1",
34
45
  "@types/node": "^12.19.0",
35
46
  "@typescript-eslint/eslint-plugin": "~4.14.0",
36
47
  "@typescript-eslint/parser": "~4.14.0",
37
- "concurrently": "^5.2.0",
48
+ "concurrently": "^6.2.0",
38
49
  "copyfiles": "^2.1.0",
39
50
  "eslint": "~7.18.0",
40
51
  "eslint-plugin-eslint-comments": "~3.2.0",
@@ -44,7 +55,15 @@
44
55
  "eslint-plugin-react": "~7.22.0",
45
56
  "eslint-plugin-unicorn": "~26.0.1",
46
57
  "rimraf": "^2.6.2",
58
+ "tsd": "^0.17.0",
47
59
  "typescript": "~4.1.3",
48
60
  "typescript-formatter": "7.1.0"
61
+ },
62
+ "tsd": {
63
+ "directory": "test-d"
64
+ },
65
+ "typeValidation": {
66
+ "version": "0.41.0",
67
+ "broken": {}
49
68
  }
50
69
  }
@@ -4,23 +4,45 @@
4
4
  */
5
5
 
6
6
  import {
7
- IProvideFluidConfiguration,
8
- IProvideFluidLoadable,
9
- IProvideFluidRunnable,
7
+ IFluidConfiguration,
8
+ IFluidLoadable,
9
+ IFluidRunnable,
10
10
  } from "./fluidLoadable";
11
- import { IProvideFluidRouter } from "./fluidRouter";
12
- import { IProvideFluidHandle, IProvideFluidHandleContext } from "./handles";
13
- import { IProvideFluidSerializer } from "./serializer";
11
+ import { IFluidRouter } from "./fluidRouter";
12
+ import { IFluidHandle, IFluidHandleContext } from "./handles";
13
+ import { IFluidSerializer } from "./serializer";
14
14
 
15
- /* eslint-disable @typescript-eslint/no-empty-interface */
16
- export interface IFluidObject extends
17
- Readonly<Partial<
18
- IProvideFluidLoadable
19
- & IProvideFluidRunnable
20
- & IProvideFluidRouter
21
- & IProvideFluidHandleContext
22
- & IProvideFluidConfiguration
23
- & IProvideFluidHandle
24
- & IProvideFluidSerializer>> {
15
+ /**
16
+ * @deprecated Use `FluidObject` or the interface directly instead
17
+ */
18
+ export interface IFluidObject {
19
+
20
+ /**
21
+ * @deprecated - use `FluidObject<IFluidLoadable>` instead
22
+ */
23
+ readonly IFluidLoadable?: IFluidLoadable;
24
+ /**
25
+ * @deprecated - use `FluidObject<IFluidRunnable>` instead
26
+ */
27
+ readonly IFluidRunnable?: IFluidRunnable
28
+ /**
29
+ * @deprecated - use `FluidObject<IFluidRouter>` instead
30
+ */
31
+ readonly IFluidRouter?: IFluidRouter;
32
+ /**
33
+ * @deprecated - use `FluidObject<IFluidHandleContext>` instead
34
+ */
35
+ readonly IFluidHandleContext?: IFluidHandleContext;
36
+ /**
37
+ * @deprecated - use `FluidObject<IFluidConfiguration>` instead
38
+ */
39
+ readonly IFluidConfiguration?: IFluidConfiguration;
40
+ /**
41
+ * @deprecated - use `FluidObject<IFluidHandle>` instead
42
+ */
43
+ readonly IFluidHandle?: IFluidHandle;
44
+ /**
45
+ * @deprecated - use `FluidObject<IFluidSerializer>` instead
46
+ */
47
+ readonly IFluidSerializer?: IFluidSerializer;
25
48
  }
26
- /* eslint-enable @typescript-eslint/no-empty-interface */
@@ -33,7 +33,7 @@ export interface IFluidPackageEnvironment {
33
33
  * Fluid-specific properties expected on a package to be loaded by the code loader.
34
34
  * While compatible with the npm package format it is not necessary that that package is an
35
35
  * npm package:
36
- * https://stackoverflow.com/questions/10065564/add-custom-metadata-or-config-to-package-json-is-it-valid
36
+ * {@link https://stackoverflow.com/questions/10065564/add-custom-metadata-or-config-to-package-json-is-it-valid}
37
37
  */
38
38
  export interface IFluidPackage {
39
39
  /**
@@ -112,10 +112,11 @@ export interface IFluidCodeDetailsComparer extends IProvideFluidCodeDetailsCompa
112
112
  * Determines if the `candidate` code details satisfy the constraints specified in `constraint` code details.
113
113
  *
114
114
  * Similar semantics to:
115
- * https://github.com/npm/node-semver#usage
115
+ * {@link https://github.com/npm/node-semver#usage}
116
116
  */
117
117
  satisfies(candidate: IFluidCodeDetails, constraint: IFluidCodeDetails): Promise<boolean>;
118
118
 
119
+ /* eslint-disable max-len */
119
120
  /**
120
121
  * Return a number representing the ascending sort order of the `a` and `b` code details;
121
122
  * `< 0` if `a < b`.
@@ -124,7 +125,8 @@ export interface IFluidCodeDetailsComparer extends IProvideFluidCodeDetailsCompa
124
125
  * `undefined` if `a` is not comparable to `b`.
125
126
  *
126
127
  * Similar semantics to:
127
- * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Description
128
+ * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Description | Array.sort}
128
129
  */
129
130
  compare(a: IFluidCodeDetails, b: IFluidCodeDetails): Promise<number | undefined>;
131
+ /* eslint-enable max-len */
130
132
  }
package/src/handles.ts CHANGED
@@ -20,18 +20,18 @@ export interface IFluidHandleContext extends IProvideFluidHandleContext {
20
20
  /**
21
21
  * The absolute path to the handle context from the root.
22
22
  */
23
- absolutePath: string;
23
+ readonly absolutePath: string;
24
24
 
25
25
  /**
26
26
  * The parent IFluidHandleContext that has provided a route path to this IFluidHandleContext or undefined
27
27
  * at the root.
28
28
  */
29
- routeContext?: IFluidHandleContext;
29
+ readonly routeContext?: IFluidHandleContext;
30
30
 
31
31
  /**
32
32
  * Flag indicating whether or not the entity has services attached.
33
33
  */
34
- isAttached: boolean;
34
+ readonly isAttached: boolean;
35
35
 
36
36
  /**
37
37
  * Runs through the graph and attach the bounded handles.
@@ -60,12 +60,12 @@ export interface IFluidHandle<
60
60
  *
61
61
  * The absolute path to the handle context from the root.
62
62
  */
63
- absolutePath: string;
63
+ readonly absolutePath: string;
64
64
 
65
65
  /**
66
66
  * Flag indicating whether or not the entity has services attached.
67
67
  */
68
- isAttached: boolean;
68
+ readonly isAttached: boolean;
69
69
 
70
70
  /**
71
71
  * Runs through the graph and attach the bounded handles.
package/src/index.ts CHANGED
@@ -21,3 +21,4 @@ export {
21
21
  export * from "./handles";
22
22
  export * from "./serializer";
23
23
  export * from "./fluidPackage";
24
+ export * from "./provider";
@@ -0,0 +1,70 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ /**
7
+ * @internal
8
+ * This utility type is meant for internal use by @see FluidObject
9
+ * Produces a valid FluidObject key given a type and a property.
10
+ * A valid FluidObject key is a property that exists on the incoming type
11
+ * as well as on the type of the property itself. For example, IProvideFoo.IFoo.IFoo
12
+ * This aligns with the FluidObject pattern expected to be used with all FluidObjects.
13
+ * For example:
14
+ * ```
15
+ * interface IProvideFoo{
16
+ * IFoo: IFoo
17
+ * }
18
+ * interface IFoo extends IProvideFoo{
19
+ * foobar();
20
+ * }
21
+ * ```
22
+ * This pattern enables discovery, and delegation in a standard way which is central
23
+ * to FluidObject pattern
24
+ */
25
+ export type FluidObjectProviderKeys<T, TProp extends keyof T = keyof T> =
26
+ string extends TProp ? never : number extends TProp? never : // exclude indexers [key:string |number]: any
27
+ TProp extends keyof Exclude<T[TProp], undefined> // TProp is a property of T, and T[TProp]
28
+ ? TProp
29
+ :never;
30
+
31
+ /**
32
+ * This utility type take interface(s) that follow the FluidObject pattern, and produces
33
+ * a new type that can be used for inspection and discovery of those interfaces.
34
+ *
35
+ * It is meant to be used with types that are known to implement the FluidObject pattern.
36
+ * A common way to specify a type implements the FluidObject pattern is to expose it as a
37
+ * FluidObject without a generic argument.
38
+ *
39
+ * For example, if we have an interface like below
40
+ * ```
41
+ * interface IProvideFoo{
42
+ * IFoo: IFoo
43
+ * }
44
+ * interface IFoo extends IProvideFoo{
45
+ * foobar();
46
+ * }
47
+ * ```
48
+ *
49
+ * and a function that returns a FluidObject. You would do the following
50
+ *
51
+ * `const maybeFoo: FluidObject<IFoo> = getFluidObject()`;
52
+ *
53
+ * Either IFoo or IProvideFoo are valid generic arguments. In both case
54
+ * maybeFoo will be of type `{IFoo?: IFoo}`. If IFoo is not undefined,
55
+ * then the FluidObject provides IFoo, and it can be used.
56
+ *
57
+ * You can inspect multiple types via a intersection. For example:
58
+ * `FluidObject<IFoo & IBar>`
59
+ *
60
+ */
61
+ export type FluidObject<T = unknown> = Partial<Pick<T, FluidObjectProviderKeys<T>>>;
62
+
63
+ /**
64
+ * This utility type creates a type that is the union of all keys on the generic type
65
+ * which implement the FluidObject pattern. @see FluidObject
66
+ *
67
+ * For example `FluidObjectKeys<IFoo & IBar>` would result in `"IFoo" | "IBar"`
68
+ *
69
+ */
70
+ export type FluidObjectKeys<T> = keyof FluidObject<T>;
package/src/serializer.ts CHANGED
@@ -31,6 +31,17 @@ export interface IFluidSerializer extends IProvideFluidSerializer {
31
31
  */
32
32
  replaceHandles(value: any, bind: IFluidHandle): any;
33
33
 
34
+ /**
35
+ * Given a fully-jsonable object tree that may have encoded handle objects embedded within, will return an
36
+ * equivalent object tree where any encoded IFluidHandles have been replaced with thier decoded form.
37
+ *
38
+ * The original `input` object is not mutated. This method will shallowly clones all objects in the path from
39
+ * the root to any replaced handles. (If no handles are found, returns the original object.)
40
+ *
41
+ * The decoded handles are implicitly bound to the handle context of this serializer.
42
+ */
43
+ decode?(input: any): any;
44
+
34
45
  /**
35
46
  * Stringifies a given value. Converts any IFluidHandle to its stringified equivalent.
36
47
  */
@@ -0,0 +1,103 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ /* eslint-disable unicorn/filename-case */
6
+ // eslint-disable-next-line import/no-extraneous-dependencies
7
+ import {expectError} from "tsd";
8
+ import { IFluidLoadable, IProvideFluidLoadable, FluidObject, FluidObjectKeys, IFluidObject } from "../dist";
9
+
10
+
11
+ declare function getFluidObject(): FluidObject;
12
+
13
+ declare function useFluidObject(params: FluidObject | undefined): void;
14
+
15
+ declare function useProvider<T extends FluidObject>(params: FluidObject<T> | undefined): void;
16
+
17
+ declare function useProviderKey<T,TKey extends FluidObjectKeys<T> = FluidObjectKeys<T>>(key: TKey): void;
18
+
19
+ declare function useLoadable(params: FluidObject<IFluidLoadable> | undefined): void;
20
+
21
+ // test implicit conversions between FluidObject and a FluidObject with a provides interface
22
+ {
23
+ const provider: FluidObject<IProvideFluidLoadable> = getFluidObject();
24
+ useFluidObject(provider);
25
+ useFluidObject(provider.IFluidLoadable);
26
+ useProvider(provider);
27
+ useProvider(provider.IFluidLoadable);
28
+ useLoadable(provider);
29
+ useLoadable(provider.IFluidLoadable);
30
+ expectError(provider.handle);
31
+ provider.IFluidLoadable?.handle;
32
+ const unknown: FluidObject | undefined = provider.IFluidLoadable;
33
+ useFluidObject(unknown);
34
+ useProvider(unknown);
35
+ useProvider<IFluidLoadable>(unknown);
36
+ useLoadable(unknown);
37
+ }
38
+
39
+ // test implicit conversions between FluidObject and a FluidObject with a implementation interface
40
+ {
41
+ const foo: FluidObject<IFluidLoadable> = getFluidObject();
42
+ useFluidObject(foo);
43
+ useFluidObject(foo.IFluidLoadable);
44
+ useProvider(foo);
45
+ useProvider(foo.IFluidLoadable);
46
+ useLoadable(foo);
47
+ useLoadable(foo.IFluidLoadable);
48
+ expectError(foo.handle);
49
+ foo.IFluidLoadable?.handle;
50
+ const unknown: FluidObject | undefined = foo.IFluidLoadable;
51
+ useFluidObject(unknown);
52
+ useProvider(unknown);
53
+ useProvider<IFluidLoadable>(unknown);
54
+ useLoadable(unknown);
55
+ }
56
+
57
+ // test getting keys
58
+ {
59
+ useProviderKey<IProvideFluidLoadable>(IFluidLoadable);
60
+ useProviderKey<IFluidLoadable>(IFluidLoadable);
61
+ const loadableKey: keyof IFluidLoadable = "handle";
62
+ expectError(useProviderKey<IFluidLoadable>(loadableKey));
63
+ }
64
+
65
+ // test implicit conversions between FluidObject and a FluidObject with a partial provider interface
66
+ {
67
+
68
+ interface IProvideFoo{
69
+ IFoo: IFoo;
70
+ }
71
+ interface IFoo extends Partial<IProvideFoo>{
72
+ doFoo();
73
+ }
74
+
75
+ const foo: FluidObject<IFoo> = getFluidObject();
76
+ useFluidObject(foo);
77
+ useFluidObject(foo.IFoo);
78
+ useProvider(foo);
79
+ useProvider(foo.IFoo);
80
+ foo.IFoo?.doFoo();
81
+ const fooKey: keyof IFoo = "doFoo";
82
+ expectError(useProviderKey<IFoo>(fooKey));
83
+ const unknown: FluidObject | undefined = foo.IFoo;
84
+ useFluidObject(unknown);
85
+ useProvider(unknown);
86
+ useProvider<IFoo>(unknown);
87
+ useLoadable(unknown);
88
+ }
89
+
90
+ // test implicit conversions between FluidObject and IFluidObject for backcompat
91
+ declare function getIFluidObject(): IFluidObject;
92
+ {
93
+ const fluidObject: FluidObject = getIFluidObject();
94
+ const legacy: IFluidObject = getFluidObject();
95
+ useLoadable(fluidObject)
96
+ useLoadable(legacy)
97
+ useFluidObject(fluidObject);
98
+ useFluidObject(legacy);
99
+ useProvider(legacy);
100
+ useProvider(fluidObject);
101
+ useProvider<IFluidLoadable>(legacy);
102
+ useProvider<IFluidLoadable>(fluidObject);
103
+ }
package/tsconfig.json CHANGED
@@ -2,7 +2,8 @@
2
2
  "extends": "@fluidframework/build-common/ts-common-config.json",
3
3
  "exclude": [
4
4
  "dist",
5
- "node_modules"
5
+ "node_modules",
6
+ "test-d"
6
7
  ],
7
8
  "compilerOptions": {
8
9
  "rootDir": "./src",
@@ -11,4 +12,4 @@
11
12
  "include": [
12
13
  "src/**/*"
13
14
  ]
14
- }
15
+ }