@devvit/public-api 0.10.23-next-2024-07-02-c8b9ec453.0 → 0.10.23-next-2024-07-23-5e7d46268.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. package/apis/AssetsClient/AssetsClient.d.ts +0 -6
  2. package/apis/AssetsClient/AssetsClient.d.ts.map +1 -1
  3. package/apis/AssetsClient/AssetsClient.js +12 -26
  4. package/apis/makeAPIClients.d.ts.map +1 -1
  5. package/apis/makeAPIClients.js +2 -2
  6. package/apis/realtime/RealtimeClient.d.ts +2 -2
  7. package/apis/realtime/RealtimeClient.d.ts.map +1 -1
  8. package/apis/realtime/RealtimeClient.js +2 -2
  9. package/apis/reddit/RedditAPIClient.d.ts +2 -10
  10. package/apis/reddit/RedditAPIClient.d.ts.map +1 -1
  11. package/apis/reddit/RedditAPIClient.js +1 -11
  12. package/apis/reddit/models/Comment.d.ts +0 -2
  13. package/apis/reddit/models/Comment.d.ts.map +1 -1
  14. package/apis/reddit/models/Comment.js +2 -12
  15. package/apis/reddit/models/Post.d.ts +0 -2
  16. package/apis/reddit/models/Post.d.ts.map +1 -1
  17. package/apis/reddit/models/Post.js +2 -12
  18. package/apis/reddit/models/Subreddit.d.ts +1 -17
  19. package/apis/reddit/models/Subreddit.d.ts.map +1 -1
  20. package/apis/reddit/models/Subreddit.js +0 -15
  21. package/apis/reddit/models/User.d.ts.map +1 -1
  22. package/apis/reddit/models/User.js +2 -1
  23. package/apis/scheduler/SchedulerClient.d.ts +1 -1
  24. package/apis/scheduler/SchedulerClient.d.ts.map +1 -1
  25. package/apis/ui/UIClient.d.ts +3 -3
  26. package/apis/ui/UIClient.d.ts.map +1 -1
  27. package/apis/ui/helpers/assertValidFormFields.d.ts +2 -2
  28. package/apis/ui/helpers/assertValidFormFields.d.ts.map +1 -1
  29. package/apis/ui/helpers/getFormValues.d.ts +2 -2
  30. package/apis/ui/helpers/getFormValues.d.ts.map +1 -1
  31. package/apis/ui/helpers/getFormValues.js +1 -3
  32. package/apis/ui/helpers/transformForm.d.ts +1 -1
  33. package/apis/ui/helpers/transformForm.d.ts.map +1 -1
  34. package/devvit/Devvit.d.ts +6 -8
  35. package/devvit/Devvit.d.ts.map +1 -1
  36. package/devvit/Devvit.js +2 -10
  37. package/devvit/internals/blocks/BlocksReconciler.d.ts.map +1 -1
  38. package/devvit/internals/blocks/BlocksReconciler.js +5 -25
  39. package/devvit/internals/blocks/BlocksTransformer.d.ts +2 -2
  40. package/devvit/internals/blocks/BlocksTransformer.d.ts.map +1 -1
  41. package/devvit/internals/blocks/BlocksTransformer.js +3 -3
  42. package/devvit/internals/blocks/handler/BlocksHandler.d.ts +0 -4
  43. package/devvit/internals/blocks/handler/BlocksHandler.d.ts.map +1 -1
  44. package/devvit/internals/blocks/handler/BlocksHandler.js +9 -33
  45. package/devvit/internals/blocks/handler/ContextBuilder.d.ts.map +1 -1
  46. package/devvit/internals/blocks/handler/ContextBuilder.js +8 -3
  47. package/devvit/internals/blocks/handler/RenderContext.d.ts +1 -5
  48. package/devvit/internals/blocks/handler/RenderContext.d.ts.map +1 -1
  49. package/devvit/internals/blocks/handler/RenderContext.js +3 -30
  50. package/devvit/internals/blocks/handler/UIClient.d.ts +4 -4
  51. package/devvit/internals/blocks/handler/UIClient.d.ts.map +1 -1
  52. package/devvit/internals/blocks/handler/test-helpers.d.ts +0 -1
  53. package/devvit/internals/blocks/handler/test-helpers.d.ts.map +1 -1
  54. package/devvit/internals/blocks/handler/test-helpers.js +0 -3
  55. package/devvit/internals/blocks/handler/types.d.ts +9 -15
  56. package/devvit/internals/blocks/handler/types.d.ts.map +1 -1
  57. package/devvit/internals/blocks/handler/useAsync.d.ts.map +1 -1
  58. package/devvit/internals/blocks/handler/useAsync.js +13 -17
  59. package/devvit/internals/blocks/handler/useChannel.d.ts +1 -2
  60. package/devvit/internals/blocks/handler/useChannel.d.ts.map +1 -1
  61. package/devvit/internals/blocks/handler/useChannel.js +13 -49
  62. package/devvit/internals/blocks/handler/useForm.d.ts +5 -18
  63. package/devvit/internals/blocks/handler/useForm.d.ts.map +1 -1
  64. package/devvit/internals/blocks/handler/useForm.js +6 -3
  65. package/devvit/internals/blocks/handler/useState.d.ts +1 -1
  66. package/devvit/internals/blocks/handler/useState.d.ts.map +1 -1
  67. package/devvit/internals/blocks/handler/useState.js +14 -14
  68. package/devvit/internals/blocks/useChannel.d.ts.map +1 -1
  69. package/devvit/internals/blocks/useChannel.js +2 -15
  70. package/devvit/internals/blocks/useForm.d.ts.map +1 -1
  71. package/devvit/internals/context.d.ts.map +1 -1
  72. package/devvit/internals/context.js +13 -16
  73. package/index.d.ts +0 -1
  74. package/index.d.ts.map +1 -1
  75. package/index.js +0 -1
  76. package/meta.json +309 -311
  77. package/meta.min.json +116 -186
  78. package/package.json +8 -8
  79. package/public-api.d.ts +1750 -2042
  80. package/public-api.iife.js +7282 -7007
  81. package/public-api.min.js +5 -5
  82. package/public-api.min.js.map +4 -4
  83. package/types/context.d.ts +3 -5
  84. package/types/context.d.ts.map +1 -1
  85. package/types/data.d.ts +3 -3
  86. package/types/data.d.ts.map +1 -1
  87. package/types/form.d.ts +17 -28
  88. package/types/form.d.ts.map +1 -1
  89. package/types/hooks.d.ts +7 -37
  90. package/types/hooks.d.ts.map +1 -1
  91. package/types/realtime.d.ts +3 -3
  92. package/types/realtime.d.ts.map +1 -1
  93. package/types/scheduler.d.ts +14 -15
  94. package/types/scheduler.d.ts.map +1 -1
  95. package/types/ui-client.d.ts +4 -4
  96. package/types/ui-client.d.ts.map +1 -1
  97. package/devvit/internals/blocks/handler/cache.d.ts +0 -9
  98. package/devvit/internals/blocks/handler/cache.d.ts.map +0 -1
  99. package/devvit/internals/blocks/handler/cache.js +0 -5
  100. package/devvit/internals/blocks/handler/cache.test.d.ts.map +0 -1
  101. package/devvit/internals/blocks/handler/promise_cache.d.ts +0 -67
  102. package/devvit/internals/blocks/handler/promise_cache.d.ts.map +0 -1
  103. package/devvit/internals/blocks/handler/promise_cache.js +0 -239
  104. package/types/context.test.d.ts.map +0 -1
  105. package/version.json +0 -75
@@ -7,11 +7,9 @@ import type { RealtimeClient } from '../apis/realtime/RealtimeClient.js';
7
7
  import type { RedditAPIClient } from '../apis/reddit/RedditAPIClient.js';
8
8
  import type { EffectEmitter } from '../devvit/internals/blocks/EffectEmitter.js';
9
9
  import type { CacheHelper } from '../devvit/internals/cache.js';
10
- import type { Form, FormFunction, FormKey } from './form.js';
11
- import type { FormToFormValues, UseChannelResult, UseIntervalHook, UseStateResult } from './hooks.js';
10
+ import type { UseChannelHook, UseFormHook, UseIntervalHook, UseStateResult } from './hooks.js';
12
11
  import type { KVStore } from './kvStore.js';
13
12
  import type { MediaPlugin } from './media.js';
14
- import type { ChannelOptions } from './realtime.js';
15
13
  import type { RedisClient } from './redis.js';
16
14
  import type { Scheduler } from './scheduler.js';
17
15
  import type { SettingsClient } from './settings.js';
@@ -127,12 +125,12 @@ export type ContextAPIClients = {
127
125
  * A hook for managing a form between Block renders.
128
126
  * This is only available within a Block Component.
129
127
  */
130
- useForm: <const T extends Form | FormFunction = Form | FormFunction>(form: T, onSubmit: (values: FormToFormValues<T>) => void | Promise<void>) => FormKey;
128
+ useForm: UseFormHook;
131
129
  /**
132
130
  * A hook hor managing a realtime pubsub channel between Block renders.
133
131
  * This is only available within a Block Component.
134
132
  */
135
- useChannel: <Message extends JSONValue = JSONValue>(options: ChannelOptions<Message>) => UseChannelResult<Message>;
133
+ useChannel: UseChannelHook;
136
134
  };
137
135
  /** The current app context of the event or render */
138
136
  export type Context = ContextAPIClients & BaseContext;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/types/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/types/context.ts"],"names":[],"mappings":"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"}
package/types/data.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { JSONObject } from '@devvit/shared-types/json.js';
2
- /** @deprecated Use JSONObject instead. */
3
- export type Data = JSONObject;
1
+ export type Data = {
2
+ [key: string]: any;
3
+ };
4
4
  //# sourceMappingURL=data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/types/data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D,0CAA0C;AAC1C,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/types/data.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,IAAI,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC"}
package/types/form.d.ts CHANGED
@@ -1,23 +1,22 @@
1
1
  import type { FieldConfig_Boolean, FieldConfig_Number, FieldConfig_Paragraph, FieldConfig_Selection, FieldConfig_Selection_Item, FieldConfig_String } from '@devvit/protos';
2
2
  import type { Prettify } from '@devvit/shared-types/Prettify.js';
3
- import type { JSONObject } from '@devvit/shared-types/json.js';
4
- import type { FormKey } from '@devvit/shared-types/useForm.js';
3
+ import type { Data } from './data.js';
5
4
  import type { Devvit } from '../devvit/Devvit.js';
6
- import type { FormToFormValues } from './index.js';
7
- export type { FormKey };
8
- export type FormValues = JSONObject;
9
- export type FormOnSubmitEvent<T extends Partial<JSONObject>> = {
5
+ export type FormValues = Data;
6
+ export type FormOnSubmitEvent = {
10
7
  /** The form values that were submitted */
11
- values: T;
8
+ values: FormValues;
12
9
  };
13
- export type FormOnSubmitEventHandler<Data extends Partial<JSONObject>> = (
10
+ /** A unique key generated by `Devvit.createForm` or the `useForm` hook. */
11
+ export type FormKey = `form.${number}` | `form.hook.${string}.${number}`;
12
+ export type FormOnSubmitEventHandler = (
14
13
  /** The event object containing the results of the form submission */
15
- event: FormOnSubmitEvent<Data>,
14
+ event: FormOnSubmitEvent,
16
15
  /** The current app context of the form submission event */
17
16
  context: Devvit.Context) => void | Promise<void>;
18
17
  export type Form = {
19
18
  /** The fields that will be displayed in the form */
20
- fields: readonly FormField[];
19
+ fields: FormField[];
21
20
  /** An optional title for the form */
22
21
  title?: string;
23
22
  /** An optional description for the form */
@@ -44,36 +43,27 @@ export type Form = {
44
43
  * });
45
44
  * ```
46
45
  * */
47
- export type FormFunction<T extends JSONObject = JSONObject> = (data: T) => Form;
48
- export type FormDefinition<T extends Form | FormFunction = Form | FormFunction> = {
46
+ export type FormFunction = (data: Data) => Form;
47
+ export type FormDefinition = {
49
48
  /** A form or a function that returns a form */
50
- form: T;
49
+ form: Form | FormFunction;
51
50
  /** A callback that will be invoked when the form is submitted */
52
- onSubmit: FormOnSubmitEventHandler<FormToFormValues<T>>;
51
+ onSubmit: FormOnSubmitEventHandler;
53
52
  };
54
53
  export type BaseField<ValueType> = {
55
- /**
56
- * The name of the field. This will be used as the key in the `values` object
57
- * when the form is submitted.
58
- */
54
+ /** The name of the field. This will be used as the key in the `values` object when the form is submitted */
59
55
  name: string;
60
56
  /** The label of the field. This will be displayed to the user */
61
57
  label: string;
62
58
  /** An optional help text that will be displayed below the field */
63
59
  helpText?: string | undefined;
64
- /**
65
- * If true the field will be required and the user will not be able to submit
66
- * the form without filling it in.
67
- */
60
+ /** If true the field will be required and the user will not be able to submit the form without filling it in */
68
61
  required?: boolean | undefined;
69
62
  /** If true the field will be disabled */
70
63
  disabled?: boolean | undefined;
71
64
  /** The default value of the field */
72
65
  defaultValue?: ValueType | undefined;
73
- /**
74
- * This indicates whether the field (setting) is an app level or install level
75
- * setting. App setting values can be used by any installation.
76
- */
66
+ /** This indicates whether the field (setting) is an app level or install level setting. App setting values can be used by any installation. */
77
67
  scope?: SettingScopeType | undefined;
78
68
  };
79
69
  export type SettingScopeType = 'installation' | 'app';
@@ -117,10 +107,9 @@ export type FormFieldGroup = {
117
107
  /** The label of the group that will be displayed to the user */
118
108
  label: string;
119
109
  /** The fields that will be displayed in the group */
120
- fields: readonly FormField[];
110
+ fields: FormField[];
121
111
  /** An optional help text that will be displayed below the group */
122
112
  helpText?: string | undefined;
123
- required?: never;
124
113
  };
125
114
  export type FormField = StringField | ImageField | ParagraphField | NumberField | BooleanField | SelectField | FormFieldGroup;
126
115
  //# sourceMappingURL=form.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/types/form.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,YAAY,EAAE,OAAO,EAAE,CAAC;AAExB,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC;AAEpC,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,IAAI;IAC7D,0CAA0C;IAC1C,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,IAAI,SAAS,OAAO,CAAC,UAAU,CAAC,IAAI;AACvE,qEAAqE;AACrE,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC;AAC9B,2DAA2D;AAC3D,OAAO,EAAE,MAAM,CAAC,OAAO,KACpB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,MAAM,IAAI,GAAG;IACjB,oDAAoD;IACpD,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IAC7B,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;;KAgBK;AACL,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAEhF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,IAAI,GAAG,YAAY,GAAG,IAAI,GAAG,YAAY,IAAI;IAChF,+CAA+C;IAC/C,IAAI,EAAE,CAAC,CAAC;IACR,iEAAiE;IACjE,QAAQ,EAAE,wBAAwB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,SAAS,IAAI;IACjC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,qCAAqC;IACrC,YAAY,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC;;;OAGG;IACH,KAAK,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,KAAK,CAAC;AAEtD,oBAAY,YAAY;IACtB,YAAY,iBAAiB;IAC7B,GAAG,QAAQ;CACZ;AAED,mBAAmB;AACnB,MAAM,MAAM,WAAW,GAAG,QAAQ,CAChC,SAAS,CAAC,MAAM,CAAC,GACf,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG;IACpD,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CACJ,CAAC;AAGF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,GAAG;IACjE,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,oCAAoC;AACpC,MAAM,MAAM,cAAc,GAAG,QAAQ,CACnC,SAAS,CAAC,MAAM,CAAC,GACf,IAAI,CAAC,qBAAqB,EAAE,eAAe,CAAC,GAAG;IAC7C,IAAI,EAAE,WAAW,CAAC;CACnB,CACJ,CAAC;AAEF,qBAAqB;AACrB,MAAM,MAAM,WAAW,GAAG,QAAQ,CAChC,SAAS,CAAC,MAAM,CAAC,GAEf,IAAI,CAAC,kBAAkB,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG;IACjD,IAAI,EAAE,QAAQ,CAAC;CAChB,CACJ,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,YAAY,GAAG,QAAQ,CAEjC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,GAClC,mBAAmB,GAAG;IACpB,IAAI,EAAE,SAAS,CAAC;CACjB,CACJ,CAAC;AAEF,wEAAwE;AACxE,MAAM,MAAM,WAAW,GAAG,QAAQ,CAChC,SAAS,CAAC,MAAM,EAAE,CAAC,GACjB,IAAI,CAAC,qBAAqB,EAAE,SAAS,GAAG,cAAc,GAAG,eAAe,GAAG,eAAe,CAAC,GAAG;IAC5F,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,0BAA0B,EAAE,CAAC;CACvC,CACJ,CAAC;AAEF,2BAA2B;AAC3B,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,SAAS,GACjB,WAAW,GACX,UAAU,GACV,cAAc,GACd,WAAW,GACX,YAAY,GACZ,WAAW,GACX,cAAc,CAAC"}
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/types/form.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC;AAE9B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,0CAA0C;IAC1C,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,OAAO,GAAG,QAAQ,MAAM,EAAE,GAAG,aAAa,MAAM,IAAI,MAAM,EAAE,CAAC;AAEzE,MAAM,MAAM,wBAAwB,GAAG;AACrC,qEAAqE;AACrE,KAAK,EAAE,iBAAiB;AACxB,2DAA2D;AAC3D,OAAO,EAAE,MAAM,CAAC,OAAO,KACpB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,MAAM,IAAI,GAAG;IACjB,oDAAoD;IACpD,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;;KAgBK;AACL,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;AAEhD,MAAM,MAAM,cAAc,GAAG;IAC3B,+CAA+C;IAC/C,IAAI,EAAE,IAAI,GAAG,YAAY,CAAC;IAC1B,iEAAiE;IACjE,QAAQ,EAAE,wBAAwB,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,SAAS,IAAI;IACjC,4GAA4G;IAC5G,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,gHAAgH;IAChH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,qCAAqC;IACrC,YAAY,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,+IAA+I;IAC/I,KAAK,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,KAAK,CAAC;AAEtD,oBAAY,YAAY;IACtB,YAAY,iBAAiB;IAC7B,GAAG,QAAQ;CACZ;AAED,mBAAmB;AACnB,MAAM,MAAM,WAAW,GAAG,QAAQ,CAChC,SAAS,CAAC,MAAM,CAAC,GACf,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG;IACpD,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CACJ,CAAC;AAGF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,GAAG;IACjE,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,oCAAoC;AACpC,MAAM,MAAM,cAAc,GAAG,QAAQ,CACnC,SAAS,CAAC,MAAM,CAAC,GACf,IAAI,CAAC,qBAAqB,EAAE,eAAe,CAAC,GAAG;IAC7C,IAAI,EAAE,WAAW,CAAC;CACnB,CACJ,CAAC;AAEF,qBAAqB;AACrB,MAAM,MAAM,WAAW,GAAG,QAAQ,CAChC,SAAS,CAAC,MAAM,CAAC,GAEf,IAAI,CAAC,kBAAkB,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG;IACjD,IAAI,EAAE,QAAQ,CAAC;CAChB,CACJ,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,YAAY,GAAG,QAAQ,CAEjC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,GAClC,mBAAmB,GAAG;IACpB,IAAI,EAAE,SAAS,CAAC;CACjB,CACJ,CAAC;AAEF,wEAAwE;AACxE,MAAM,MAAM,WAAW,GAAG,QAAQ,CAChC,SAAS,CAAC,MAAM,EAAE,CAAC,GACjB,IAAI,CAAC,qBAAqB,EAAE,SAAS,GAAG,cAAc,GAAG,eAAe,GAAG,eAAe,CAAC,GAAG;IAC5F,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,0BAA0B,EAAE,CAAC;CACvC,CACJ,CAAC;AAEF,2BAA2B;AAC3B,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,SAAS,GACjB,WAAW,GACX,UAAU,GACV,cAAc,GACd,WAAW,GACX,YAAY,GACZ,WAAW,GACX,cAAc,CAAC"}
package/types/hooks.d.ts CHANGED
@@ -1,7 +1,6 @@
1
- import type { JSONObject, JSONValue } from '@devvit/shared-types/json.js';
2
- import type { FormKey } from '@devvit/shared-types/useForm.js';
3
1
  import type { Context } from './context.js';
4
- import type { BooleanField, Form, FormField, FormFieldGroup, FormFunction, ImageField, NumberField, ParagraphField, SelectField, StringField } from './form.js';
2
+ import type { Data } from './data.js';
3
+ import type { Form, FormFunction, FormKey, FormValues } from './form.js';
5
4
  import type { ChannelOptions, ChannelStatus } from './realtime.js';
6
5
  export type Dispatch<A> = (value: A) => void;
7
6
  export type SetStateAction<S> = S | ((prevState: S) => S);
@@ -9,8 +8,8 @@ export type StateSetter<S> = Dispatch<SetStateAction<S>>;
9
8
  /** A tuple containing the current state and a function to update it */
10
9
  export type UseStateResult<S> = [S, StateSetter<S>];
11
10
  export type UseStateHook = Context['useState'];
11
+ export type UseStateInitializer<S> = S | (() => S);
12
12
  export type AsyncUseStateInitializer<S> = () => Promise<S>;
13
- export type UseStateInitializer<S> = S | (() => S) | AsyncUseStateInitializer<S>;
14
13
  export type AsyncError = {
15
14
  message: string;
16
15
  details: string | null;
@@ -21,35 +20,7 @@ export type UseAsyncResult<S> = {
21
20
  error: AsyncError | null;
22
21
  };
23
22
  /** A hook that returns a form key that can be used in the `ui.showForm` */
24
- export type UseFormHook<T extends Form | FormFunction = Form | FormFunction> = (form: T, onSubmit: (values: FormToFormValues<T>) => void | Promise<void>) => FormKey;
25
- export type FormToFormValues<T extends Form | FormFunction = Form | FormFunction> = FormFieldsToFormValues<(T extends FormFunction ? ReturnType<T> : T)['fields']>;
26
- /**
27
- * Input is a FormField[], output is a
28
- * {fieldNameA: fieldTypeA, fieldNameB: fieldTypeB}.
29
- */
30
- type FormFieldsToFormValues<T extends readonly FormField[]> = T extends readonly [
31
- infer Field extends FormField,
32
- ...infer Rest extends FormField[]
33
- ] ? FormFieldToFormValue<Field> & FormFieldsToFormValues<Rest> : JSONObject;
34
- /** Input is a FormField, output is a {fieldName: fieldType}. */
35
- type FormFieldToFormValue<T extends FormField> = T extends BooleanField ? {
36
- [_ in T['name']]: boolean;
37
- } : T extends ImageField | ParagraphField | StringField ? FormFieldToRequiredFormValue<T, string> : T extends NumberField ? FormFieldToRequiredFormValue<T, number> : T extends SelectField ? {
38
- [_ in T['name']]: string[];
39
- } : T extends FormFieldGroup ? FormFieldsToFormValues<T['fields']> : never;
40
- /**
41
- * Input is a FormField, output is a {fieldName: fieldType} or
42
- * {fieldName?: fieldType}.
43
- */
44
- type FormFieldToRequiredFormValue<T extends ImageField | ParagraphField | StringField | NumberField, V> = T extends {
45
- required: true;
46
- } | {
47
- defaultValue: boolean | number | string;
48
- } ? {
49
- [_ in T['name']]: V;
50
- } : {
51
- [_ in T['name']]?: V;
52
- };
23
+ export type UseFormHook = (form: Form | FormFunction, onSubmit: (values: FormValues) => void | Promise<void>) => FormKey;
53
24
  /** An object that contains functions to start and stop the interval created by the `useInterval` hook */
54
25
  export type UseIntervalResult = {
55
26
  /** Start the interval */
@@ -63,16 +34,15 @@ export type UseIntervalHook = (
63
34
  callback: () => void | Promise<void>,
64
35
  /** The delay between each callback run in milliseconds. Delay must be at least 100ms. */
65
36
  delay: number) => UseIntervalResult;
66
- export type UseChannelHook<Message extends JSONValue = JSONValue> = (options: ChannelOptions<Message>) => UseChannelResult<Message>;
67
- export type UseChannelResult<Message extends JSONValue = JSONValue> = {
37
+ export type UseChannelHook = (options: ChannelOptions) => UseChannelResult;
38
+ export type UseChannelResult = {
68
39
  /** Subscribe to the channel */
69
40
  subscribe(): void;
70
41
  /** Unsubscribe from the channel */
71
42
  unsubscribe(): void;
72
43
  /** Publish a message to the channel */
73
- send(msg: Message): Promise<void>;
44
+ send(data: Data): Promise<void>;
74
45
  /** Current subscription status */
75
46
  status: ChannelStatus;
76
47
  };
77
- export {};
78
48
  //# sourceMappingURL=hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnE,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAC7C,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzD,uEAAuE;AACvE,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAC/C,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AACrE,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAA;CAAE,CAAC;AAoB/F,2EAA2E;AAC3E,MAAM,MAAM,WAAW,GAAG,CACxB,IAAI,EAAE,IAAI,GAAG,YAAY,EACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KACnD,OAAO,CAAC;AAEb,yGAAyG;AACzG,MAAM,MAAM,iBAAiB,GAAG;IAC9B,yBAAyB;IACzB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,wBAAwB;IACxB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,uIAAuI;AACvI,MAAM,MAAM,eAAe,GAAG;AAC5B,yCAAyC;AACzC,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACpC,yFAAyF;AACzF,KAAK,EAAE,MAAM,KACV,iBAAiB,CAAC;AAUvB,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,gBAAgB,CAAC;AAW3E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,+BAA+B;IAC/B,SAAS,IAAI,IAAI,CAAC;IAClB,mCAAmC;IACnC,WAAW,IAAI,IAAI,CAAC;IACpB,uCAAuC;IACvC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,kCAAkC;IAClC,MAAM,EAAE,aAAa,CAAC;CACvB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { JSONValue } from '@devvit/shared-types/json.js';
1
+ import type { Data } from './data.js';
2
2
  export declare enum ChannelStatus {
3
3
  Unknown = 0,
4
4
  Connecting = 1,
@@ -6,11 +6,11 @@ export declare enum ChannelStatus {
6
6
  Disconnecting = 3,
7
7
  Disconnected = 4
8
8
  }
9
- export type ChannelOptions<Message extends JSONValue = JSONValue> = {
9
+ export type ChannelOptions = {
10
10
  /** Name of the channel */
11
11
  name: string;
12
12
  /** Called every time a message is received on this channel */
13
- onMessage(msg: Message): void | undefined;
13
+ onMessage(data: Data): void | undefined;
14
14
  /** Optional hook to be informed when the channel has connected */
15
15
  onSubscribed?: (() => void | Promise<void>) | undefined;
16
16
  /** Optional hook to be informed when the channel has disconnected */
@@ -1 +1 @@
1
- {"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/types/realtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D,oBAAY,aAAa;IACvB,OAAO,IAAA;IACP,UAAU,IAAA;IACV,SAAS,IAAA;IACT,aAAa,IAAA;IACb,YAAY,IAAA;CACb;AAED,MAAM,MAAM,cAAc,CAAC,OAAO,SAAS,SAAS,GAAG,SAAS,IAAI;IAClE,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,kEAAkE;IAClE,YAAY,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACxD,qEAAqE;IACrE,cAAc,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CAC3D,CAAC"}
1
+ {"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/types/realtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,oBAAY,aAAa;IACvB,OAAO,IAAA;IACP,UAAU,IAAA;IACV,SAAS,IAAA;IACT,aAAa,IAAA;IACb,YAAY,IAAA;CACb;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IACxC,kEAAkE;IAClE,YAAY,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACxD,qEAAqE;IACrE,cAAc,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CAC3D,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { JSONObject } from '@devvit/shared-types/json.js';
1
+ import type { Data } from './data.js';
2
2
  import type { Devvit } from '../devvit/Devvit.js';
3
3
  export type ScheduledJob = {
4
4
  /** ID of the scheduled job. Use this with scheduler.cancelJob to cancel the job. */
@@ -6,7 +6,7 @@ export type ScheduledJob = {
6
6
  /** The name of the scheduled job type */
7
7
  name: string;
8
8
  /** Additional data passed in by the scheduler client */
9
- data: JSONObject | undefined;
9
+ data: Data | undefined;
10
10
  /** The Date of when this job should run */
11
11
  runAt: Date;
12
12
  };
@@ -16,23 +16,23 @@ export type ScheduledCronJob = {
16
16
  /** The name of the scheduled job type */
17
17
  name: string;
18
18
  /** Additional data passed in by the scheduler client */
19
- data?: JSONObject | undefined;
19
+ data: Data | undefined;
20
20
  /** The cron string of when this job should run */
21
21
  cron: string;
22
22
  };
23
- export type ScheduledJobOptions<T extends JSONObject | undefined = JSONObject | undefined> = {
23
+ export type ScheduledJobOptions = {
24
24
  /** The name of the scheduled job type */
25
25
  name: string;
26
26
  /** Additional data passed in by the scheduler client */
27
- data?: T;
27
+ data?: Data | undefined;
28
28
  /** The Date of when this job should run */
29
29
  runAt: Date;
30
30
  };
31
- export type ScheduledCronJobOptions<T extends JSONObject | undefined = JSONObject | undefined> = {
31
+ export type ScheduledCronJobOptions = {
32
32
  /** The name of the scheduled job type */
33
33
  name: string;
34
34
  /** Additional data passed in by the scheduler client */
35
- data?: T;
35
+ data?: Data | undefined;
36
36
  /** The cron string of when this job should run */
37
37
  cron: string;
38
38
  };
@@ -41,7 +41,7 @@ export type ScheduledCronJobOptions<T extends JSONObject | undefined = JSONObjec
41
41
  * @param job The job to schedule
42
42
  * @returns {} The id of the scheduled job
43
43
  */
44
- export type RunJob<Data extends JSONObject | undefined> = (job: ScheduledJobOptions<Data> | ScheduledCronJobOptions<Data>) => Promise<string>;
44
+ export type RunJob = (job: ScheduledJobOptions | ScheduledCronJobOptions) => Promise<string>;
45
45
  /**
46
46
  * Cancel a scheduled job
47
47
  * @param jobId The id of the job to cancel
@@ -57,7 +57,7 @@ export type Scheduler = {
57
57
  * @param job The job to schedule
58
58
  * @returns {} The id of the scheduled job
59
59
  */
60
- runJob: <Data extends JSONObject | undefined>(job: ScheduledJobOptions<Data> | ScheduledCronJobOptions<Data>) => Promise<string>;
60
+ runJob: RunJob;
61
61
  /**
62
62
  * Cancel a scheduled job
63
63
  * @param jobId The id of the job to cancel
@@ -68,18 +68,17 @@ export type Scheduler = {
68
68
  */
69
69
  listJobs: () => Promise<(ScheduledJob | ScheduledCronJob)[]>;
70
70
  };
71
- export type ScheduledJobEvent<T extends JSONObject | undefined> = {
71
+ export type ScheduledJobEvent = {
72
72
  /** The name of the scheduled job */
73
73
  name: string;
74
74
  /** Additional data passed in by the scheduler client */
75
- data: T;
75
+ data?: Data | undefined;
76
76
  };
77
- export type ScheduledJobHandler<Data extends JSONObject | undefined = JSONObject | undefined> = (event: ScheduledJobEvent<Data>, context: JobContext) => void | Promise<void>;
78
- export type JobContext = Omit<Devvit.Context, 'ui' | 'dimensions' | 'modLog' | 'uiEnvironment'>;
79
- export type ScheduledJobType<Data extends JSONObject | undefined> = {
77
+ export type ScheduledJobHandler = (event: ScheduledJobEvent, context: Omit<Devvit.Context, 'ui' | 'dimensions' | 'modLog' | 'uiEnvironment'>) => void | Promise<void>;
78
+ export type ScheduledJobType = {
80
79
  /** The name of the scheduled job type */
81
80
  name: string;
82
81
  /** The function that will be called when the job is scheduled to run */
83
- onRun: ScheduledJobHandler<Data>;
82
+ onRun: ScheduledJobHandler;
84
83
  };
85
84
  //# sourceMappingURL=scheduler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/types/scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/types/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG;IACzB,oFAAoF;IACpF,EAAE,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,2CAA2C;IAC3C,KAAK,EAAE,IAAI,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,oFAAoF;IACpF,EAAE,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxB,2CAA2C;IAC3C,KAAK,EAAE,IAAI,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,mBAAmB,GAAG,uBAAuB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7F;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,YAAY,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;CAC9D,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAChC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,GAAG,YAAY,GAAG,QAAQ,GAAG,eAAe,CAAC,KAC5E,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,KAAK,EAAE,mBAAmB,CAAC;CAC5B,CAAC"}
@@ -1,7 +1,7 @@
1
- import type { JSONObject } from '@devvit/shared-types/json.js';
2
- import type { FormKey } from '@devvit/shared-types/useForm.js';
3
- import type { Comment, Post, Subreddit, User } from '../apis/reddit/models/index.js';
1
+ import type { FormKey } from './form.js';
2
+ import type { Data } from './data.js';
4
3
  import type { Toast } from './toast.js';
4
+ import type { Comment, Post, Subreddit, User } from '../apis/reddit/models/index.js';
5
5
  /**
6
6
  * The UI client lets your app interact with the Reddit frontend.
7
7
  * This client will only be available for capabilities that have
@@ -10,7 +10,7 @@ import type { Toast } from './toast.js';
10
10
  */
11
11
  export type UIClient = {
12
12
  /** Open a form in a modal */
13
- showForm(formKey: FormKey, data?: JSONObject | undefined): void;
13
+ showForm(formKey: FormKey, data?: Data | undefined): void;
14
14
  /** Show a message in a toast. */
15
15
  showToast(text: string): void;
16
16
  showToast(toast: Toast): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ui-client.d.ts","sourceRoot":"","sources":["../../src/types/ui-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,6BAA6B;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IAChE,iCAAiC;IACjC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC9B,wBAAwB;IACxB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IACvC,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;CAC1E,CAAC"}
1
+ {"version":3,"file":"ui-client.d.ts","sourceRoot":"","sources":["../../src/types/ui-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAErF;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,6BAA6B;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1D,iCAAiC;IACjC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC9B,wBAAwB;IACxB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IACvC,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;CAC1E,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { RedisClient } from '../../../../types/redis.js';
2
- import type { JSONValue } from '@devvit/shared-types/json.js';
3
- import type { CacheOptions, Clock, LocalCache } from './promise_cache.js';
4
- import type { RenderContext } from './RenderContext.js';
5
- export type CacheHelper = <T extends JSONValue>(fn: () => Promise<T>, options: CacheOptions) => Promise<T>;
6
- export declare function makeCache(redis: RedisClient, state: RenderContext['_state'] & {
7
- __cache?: LocalCache;
8
- }, clock?: Clock): CacheHelper;
9
- //# sourceMappingURL=cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../../src/devvit/internals/blocks/handler/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,SAAS,SAAS,EAC5C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,YAAY,KAClB,OAAO,CAAC,CAAC,CAAC,CAAC;AAEhB,wBAAgB,SAAS,CACvB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,UAAU,CAAA;CAAE,EACzD,KAAK,GAAE,KAAmB,GACzB,WAAW,CAGb"}
@@ -1,5 +0,0 @@
1
- import { PromiseCache, SystemClock } from './promise_cache.js';
2
- export function makeCache(redis, state, clock = SystemClock) {
3
- const pc = new PromiseCache(redis, state, clock);
4
- return pc.cache.bind(pc);
5
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.test.d.ts","sourceRoot":"","sources":["../../../../../src/devvit/internals/blocks/handler/cache.test.ts"],"names":[],"mappings":""}
@@ -1,67 +0,0 @@
1
- import type { JSONValue, RedisClient } from '../../../../index.js';
2
- export type CacheEntry = {
3
- value: JSONValue | null;
4
- expires: number;
5
- error: string | null;
6
- errorTime: number | null;
7
- checkedAt: number;
8
- errorCount: number;
9
- };
10
- export type Clock = {
11
- now(): Date;
12
- };
13
- export declare const SystemClock: Clock;
14
- export type CacheOptions = {
15
- /**
16
- * Time to live in milliseconds.
17
- */
18
- ttl: number;
19
- /**
20
- * Key to use for caching.
21
- */
22
- key: string;
23
- };
24
- export type LocalCache = {
25
- [key: string]: CacheEntry;
26
- };
27
- export declare function _namespaced(key: string): string;
28
- export declare function _lock(key: string): string;
29
- export declare const retryLimit = 3;
30
- export declare const clientRetryDelay = 1000;
31
- export declare const allowStaleFor = 30000;
32
- type WithLocalCache = {
33
- __cache?: LocalCache;
34
- };
35
- /**
36
- * Refactored out into a class to allow for easier testing and clarity of purpose.
37
- *
38
- * This class is responsible for managing the caching of promises. It is a layered cache, meaning it will first check
39
- * the local cache, then the redis cache, and finally the source of truth. It will also handle refreshing the cache according
40
- * to the TTL and error handling.
41
- *
42
- * Please note that in order to prevent a stampede of requests to the source of truth, we use a lock in redis to ensure only one
43
- * request is made to the source of truth at a time. If the lock is obtained, the cache will be updated and the lock will be released.
44
- *
45
- * Additionally, we use a polling mechanism to fetch the cache if the lock is not obtained. This is to prevent unnecessary errors.
46
- *
47
- * Finally, we also want to prevent stampedes against redis for the lock election and the retries. We use a ramping probability to ease in the
48
- * attempts to get the lock, and not every error will trigger a retry.
49
- *
50
- * This means that the cache will be eventually consistent, but will not be immediately consistent. This is a tradeoff we are willing to make.
51
- * Additionally, this means that the TTL is not precice. The cache may be updated a bit more often than the TTL, but it will not be updated less often.
52
- *
53
- */
54
- export declare class PromiseCache {
55
- #private;
56
- constructor(redis: RedisClient, state: WithLocalCache, clock?: Clock);
57
- /**
58
- * This is the public API for the cache. Call this method to cache a promise.
59
- *
60
- * @param closure
61
- * @param options
62
- * @returns
63
- */
64
- cache<T extends JSONValue>(closure: () => Promise<T>, options: CacheOptions): Promise<T>;
65
- }
66
- export {};
67
- //# sourceMappingURL=promise_cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"promise_cache.d.ts","sourceRoot":"","sources":["../../../../../src/devvit/internals/blocks/handler/promise_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnE,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,IAAI,IAAI,CAAC;CACb,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC;AAEvD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AACD,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzC;AAKD,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,aAAa,QAAS,CAAC;AAEpC,KAAK,cAAc,GAAG;IACpB,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB,CAAC;AASF;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,YAAY;;gBAUX,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,GAAE,KAAmB;IAMjF;;;;;;OAMG;IACG,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC;CA6M/F"}