@warp-drive/legacy 5.8.0-alpha.3 → 5.8.0-alpha.30

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 (83) hide show
  1. package/README.md +14 -27
  2. package/declarations/adapter/json-api.d.ts +4 -6
  3. package/declarations/adapter/rest.d.ts +5 -8
  4. package/declarations/adapter.d.ts +4 -6
  5. package/declarations/compat/-private.d.ts +1 -1
  6. package/declarations/compat/extensions.d.ts +1 -1
  7. package/declarations/compat/legacy-network-handler/minimum-adapter-interface.d.ts +7 -9
  8. package/declarations/compat/legacy-network-handler/minimum-serializer-interface.d.ts +20 -30
  9. package/declarations/compat/utils.d.ts +17 -17
  10. package/declarations/compat.d.ts +32 -8
  11. package/declarations/index.d.ts +70 -0
  12. package/declarations/model/-private/attr.d.ts +5 -6
  13. package/declarations/model/-private/belongs-to.d.ts +4 -5
  14. package/declarations/model/-private/has-many.d.ts +4 -5
  15. package/declarations/model/-private/hooks.d.ts +1 -1
  16. package/declarations/model/-private/legacy-relationships-support.d.ts +2 -2
  17. package/declarations/model/-private/model.d.ts +8 -8
  18. package/declarations/model/-private/record-state.d.ts +1 -1
  19. package/declarations/model/-private/references/belongs-to.d.ts +1 -1
  20. package/declarations/model/-private/references/has-many.d.ts +1 -1
  21. package/declarations/model/migration-support.d.ts +12 -3
  22. package/declarations/model-fragments/extensions/fragment-array.d.ts +16 -0
  23. package/declarations/model-fragments/extensions/fragment.d.ts +15 -0
  24. package/declarations/model-fragments/hooks/model-for.d.ts +20 -0
  25. package/declarations/model-fragments/index.d.ts +5 -0
  26. package/declarations/model-fragments/instance-initializers/fragment-extensions.d.ts +9 -0
  27. package/declarations/model-fragments/utilities/with-array-defaults.d.ts +15 -0
  28. package/declarations/model-fragments/utilities/with-fragment-array-defaults.d.ts +20 -0
  29. package/declarations/model-fragments/utilities/with-fragment-defaults.d.ts +19 -0
  30. package/declarations/model-fragments/utilities/with-legacy.d.ts +3 -0
  31. package/declarations/model-fragments.d.ts +9 -0
  32. package/declarations/serializer/-private/embedded-records-mixin.d.ts +0 -5
  33. package/declarations/serializer/-private/transforms/boolean.d.ts +2 -2
  34. package/declarations/serializer/-private/transforms/date.d.ts +2 -2
  35. package/declarations/serializer/-private/transforms/number.d.ts +1 -1
  36. package/declarations/serializer/-private/transforms/string.d.ts +1 -1
  37. package/declarations/serializer/json-api.d.ts +4 -6
  38. package/declarations/serializer/json.d.ts +6 -8
  39. package/declarations/serializer/rest.d.ts +4 -6
  40. package/declarations/serializer.d.ts +8 -11
  41. package/dist/{-private-8UmnAf9J.js → -private-B1pSSN52.js} +1 -1
  42. package/dist/adapter/-private.js +1 -1
  43. package/dist/adapter/error.js +5 -6
  44. package/dist/adapter/json-api.js +4 -1
  45. package/dist/adapter/rest.js +6 -9
  46. package/dist/adapter.js +4 -6
  47. package/dist/compat/-private.js +1 -1
  48. package/dist/compat/utils.js +17 -17
  49. package/dist/compat.js +55 -38
  50. package/dist/{errors-8kD2mSe_.js → errors-B9CDPh3R.js} +75 -53
  51. package/dist/hooks-CQXyievu.js +74 -0
  52. package/dist/index.js +195 -0
  53. package/dist/{json-DziiodPf.js → json-BHxlccxF.js} +8 -12
  54. package/dist/model/-private.js +1 -1
  55. package/dist/model/migration-support.js +15 -2
  56. package/dist/model-for-B0TSd9HU.js +221 -0
  57. package/dist/model-fragments.js +76 -0
  58. package/dist/model.js +18 -90
  59. package/dist/{schema-provider-DQu4Rjco.js → schema-provider-BnVr_CnJ.js} +8 -10
  60. package/dist/{serialize-into-hash-CS0MIv4F.js → serialize-into-hash-BnYvPex3.js} +1 -1
  61. package/dist/serializer/json-api.js +11 -38
  62. package/dist/serializer/json.js +1 -1
  63. package/dist/serializer/rest.js +5 -12
  64. package/dist/serializer/transform.js +15 -6
  65. package/dist/serializer.js +8 -12
  66. package/dist/store.js +3 -0
  67. package/logos/README.md +2 -2
  68. package/logos/logo-yellow-slab.svg +1 -0
  69. package/logos/word-mark-black.svg +1 -0
  70. package/logos/word-mark-white.svg +1 -0
  71. package/package.json +6 -6
  72. package/logos/NCC-1701-a-blue.svg +0 -4
  73. package/logos/NCC-1701-a-gold.svg +0 -4
  74. package/logos/NCC-1701-a-gold_100.svg +0 -1
  75. package/logos/NCC-1701-a-gold_base-64.txt +0 -1
  76. package/logos/NCC-1701-a.svg +0 -4
  77. package/logos/docs-badge.svg +0 -2
  78. package/logos/ember-data-logo-dark.svg +0 -12
  79. package/logos/ember-data-logo-light.svg +0 -12
  80. package/logos/social1.png +0 -0
  81. package/logos/social2.png +0 -0
  82. package/logos/warp-drive-logo-dark.svg +0 -4
  83. package/logos/warp-drive-logo-gold.svg +0 -4
package/dist/model.js CHANGED
@@ -4,12 +4,11 @@ import { RecordStore } from '@warp-drive/core/types/symbols';
4
4
  import { i as isElementDescriptor, n as normalizeModelName } from "./util-Dul6TZts.js";
5
5
  import { macroCondition, getGlobalConfig } from '@embroider/macros';
6
6
  import { warn, deprecate } from '@ember/debug';
7
- import { assertPrivateStore, setRecordIdentifier, StoreMap } from '@warp-drive/core/store/-private';
8
- import { l as lookupLegacySupport } from "./errors-8kD2mSe_.js";
7
+ import { assertPrivateStore } from '@warp-drive/core/store/-private';
8
+ import { l as lookupLegacySupport } from "./errors-B9CDPh3R.js";
9
9
  import { singularize, dasherize } from '@warp-drive/utilities/string';
10
- import { l as getModelFactory } from "./schema-provider-DQu4Rjco.js";
11
- export { M as Model, b as buildSchema, M as default, m as restoreDeprecatedModelRequestBehaviors } from "./schema-provider-DQu4Rjco.js";
12
- import { setOwner, getOwner } from '@ember/application';
10
+ export { M as Model, b as buildSchema, M as default, m as restoreDeprecatedModelRequestBehaviors } from "./schema-provider-BnVr_CnJ.js";
11
+ export { i as instantiateRecord, m as modelFor, t as teardownRecord } from "./hooks-CQXyievu.js";
13
12
  function _attr(type, options) {
14
13
  if (typeof type === 'object') {
15
14
  options = type;
@@ -87,12 +86,12 @@ function _attr(type, options) {
87
86
  */
88
87
 
89
88
  /**
90
- `attr` defines an attribute on a [Model](/ember-data/release/classes/Model).
89
+ `attr` defines an attribute on a {@link Model}.
91
90
  By default, attributes are passed through as-is, however you can specify an
92
91
  optional type to have the value automatically transformed.
93
- EmberData ships with four basic transform types: `string`, `number`,
92
+ WarpDrive ships with four basic transform types: `string`, `number`,
94
93
  `boolean` and `date`. You can define your own transforms by subclassing
95
- [Transform](/ember-data/release/classes/Transform).
94
+ {@link Transform}.
96
95
 
97
96
  Note that you cannot use `attr` to define an attribute of `id`.
98
97
 
@@ -169,9 +168,8 @@ function _attr(type, options) {
169
168
  ```
170
169
 
171
170
  @public
172
- @param {String|Object} type the attribute type
173
- @param {Object} options a hash of options
174
- @return {Attribute}
171
+ @param type the attribute type
172
+ @param options a hash of options
175
173
  */
176
174
 
177
175
  // see note on DataDecorator for why void
@@ -258,7 +256,7 @@ function _belongsTo(type, options) {
258
256
 
259
257
  /**
260
258
  `belongsTo` is used to define One-To-One and One-To-Many, and One-To-None
261
- relationships on a [Model](/ember-data/release/classes/Model).
259
+ relationships on a {@link Model}.
262
260
 
263
261
  `belongsTo` takes a configuration hash as a second parameter, currently
264
262
  supported options are:
@@ -340,7 +338,7 @@ function _belongsTo(type, options) {
340
338
 
341
339
  #### Sync vs Async Relationships
342
340
 
343
- EmberData fulfills relationships using resource data available in
341
+ WarpDrive fulfills relationships using resource data available in
344
342
  the cache.
345
343
 
346
344
  Sync relationships point directly to the known related resources.
@@ -408,9 +406,8 @@ function _belongsTo(type, options) {
408
406
  type each record satisfies on both sides.
409
407
 
410
408
  @public
411
- @param {String} type (optional) the name of the related resource
412
- @param {Object} options (optional) a hash of options
413
- @return {PropertyDescriptor} relationship
409
+ @param type the name of the related resource
410
+ @param options a hash of options
414
411
  */
415
412
 
416
413
  // export function belongsTo<K extends Promise<unknown>, T extends Awaited<K> = Awaited<K>>(
@@ -497,7 +494,7 @@ function _hasMany(type, options) {
497
494
 
498
495
  /**
499
496
  `hasMany` is used to define Many-To-One and Many-To-Many, and Many-To-None
500
- relationships on a [Model](/ember-data/release/classes/Model).
497
+ relationships on a {@link Model}.
501
498
 
502
499
  `hasMany` takes a configuration hash as a second parameter, currently
503
500
  supported options are:
@@ -580,7 +577,7 @@ function _hasMany(type, options) {
580
577
 
581
578
  #### Sync vs Async Relationships
582
579
 
583
- EmberData fulfills relationships using resource data available in
580
+ WarpDrive fulfills relationships using resource data available in
584
581
  the cache.
585
582
 
586
583
  Sync relationships point directly to the known related resources.
@@ -648,9 +645,8 @@ function _hasMany(type, options) {
648
645
  type each record satisfies on both sides.
649
646
 
650
647
  @public
651
- @param {String} type (optional) the name of the related resource
652
- @param {Object} options (optional) a hash of options
653
- @return {PropertyDescriptor} relationship
648
+ @param type the name of the related resource
649
+ @param options a hash of options
654
650
  */
655
651
 
656
652
  // export function hasMany<K extends Promise<unknown>, T extends Awaited<K> = Awaited<K>>(
@@ -668,72 +664,4 @@ function hasMany(type, options) {
668
664
  }
669
665
  return _hasMany(type, options);
670
666
  }
671
- function instantiateRecord(identifier, createRecordArgs) {
672
- const type = identifier.type;
673
-
674
- // TODO deprecate allowing unknown args setting
675
- const createOptions = {
676
- _createProps: createRecordArgs,
677
- // TODO @deprecate consider deprecating accessing record properties during init which the below is necessary for
678
- _secretInit: {
679
- identifier,
680
- store: this,
681
- cb: secretInit
682
- }
683
- };
684
-
685
- // ensure that `getOwner(this)` works inside a model instance
686
- setOwner(createOptions, getOwner(this));
687
- const factory = getModelFactory(this, type);
688
- macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
689
- if (!test) {
690
- throw new Error(`No model was found for '${type}'`);
691
- }
692
- })(factory) : {};
693
- return factory.class.create(createOptions);
694
- }
695
- function teardownRecord(record) {
696
- macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
697
- if (!test) {
698
- throw new Error(`expected to receive an instance of Model from @ember-data/model. If using a custom model make sure you implement teardownRecord`);
699
- }
700
- })('destroy' in record) : {};
701
- record.destroy();
702
- }
703
- function modelFor(modelName) {
704
- assertPrivateStore(this);
705
- macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
706
- if (!test) {
707
- throw new Error(`Attempted to call store.modelFor(), but the store instance has already been destroyed.`);
708
- }
709
- })(!this.isDestroyed && !this.isDestroying) : {};
710
- macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
711
- if (!test) {
712
- throw new Error(`You need to pass a model name to the store's modelFor method`);
713
- }
714
- })(modelName) : {};
715
- macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
716
- if (!test) {
717
- throw new Error(`Please pass a proper model name to the store's modelFor method`);
718
- }
719
- })(typeof modelName === 'string' && modelName.length) : {};
720
- const type = normalizeModelName(modelName);
721
- const maybeFactory = getModelFactory(this, type);
722
- const klass = maybeFactory && maybeFactory.class ? maybeFactory.class : null;
723
- const ignoreType = !klass || !klass.isModel || this._forceShim;
724
- if (!ignoreType) {
725
- return klass;
726
- }
727
- macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
728
- if (!test) {
729
- throw new Error(`No model was found for '${type}' and no schema handles the type`);
730
- }
731
- })(this.schema.hasResource({
732
- type
733
- })) : {};
734
- }
735
- function secretInit(record, identifier, store) {
736
- setRecordIdentifier(record, identifier);
737
- StoreMap.set(record, store);
738
- }
739
- export { attr, belongsTo, hasMany, instantiateRecord, modelFor, teardownRecord };
667
+ export { attr, belongsTo, hasMany };
@@ -4,8 +4,8 @@ import EmberObject from '@ember/object';
4
4
  import { recordIdentifierFor, storeFor } from '@warp-drive/core';
5
5
  import { assertPrivateStore, notifyInternalSignal, peekInternalSignal, withSignalStore, recordIdentifierFor as recordIdentifierFor$1, gate, memoized, defineSignal, coerceId, entangleSignal, defineGate } from '@warp-drive/core/store/-private';
6
6
  import { RecordStore } from '@warp-drive/core/types/symbols';
7
- import { l as lookupLegacySupport, L as LEGACY_SUPPORT, E as Errors } from "./errors-8kD2mSe_.js";
8
- import { u as upgradeStore, F as FetchManager } from "./-private-8UmnAf9J.js";
7
+ import { l as lookupLegacySupport, L as LEGACY_SUPPORT, E as Errors } from "./errors-B9CDPh3R.js";
8
+ import { u as upgradeStore, F as FetchManager } from "./-private-B1pSSN52.js";
9
9
  import { macroCondition, getGlobalConfig } from '@embroider/macros';
10
10
  import { cacheFor } from '@ember/object/internals';
11
11
  import { Context } from '@warp-drive/core/reactive/-private';
@@ -254,7 +254,7 @@ function isInvalidError(error) {
254
254
  }
255
255
 
256
256
  /**
257
- Historically EmberData managed a state machine
257
+ Historically WarpDrive managed a state machine
258
258
  for each record, the localState for which
259
259
  was reflected onto Model.
260
260
 
@@ -680,11 +680,6 @@ function computeOnce(target, propertyName, desc) {
680
680
  };
681
681
  return desc;
682
682
  }
683
-
684
- /**
685
- * @noInheritDoc
686
- */
687
-
688
683
  /**
689
684
  * Base class from which Models can be defined.
690
685
  *
@@ -727,7 +722,10 @@ function computeOnce(target, propertyName, desc) {
727
722
  * the class to use as the reactive object for data of resource
728
723
  * of that type.
729
724
  *
725
+ * @public
730
726
  * @noInheritDoc
727
+ * @hideconstructor
728
+ * @legacy
731
729
  */
732
730
  class Model extends EmberObject {
733
731
  /** @internal */
@@ -1255,7 +1253,7 @@ class Model extends EmberObject {
1255
1253
  /**
1256
1254
  Represents the model's class name as a string. This can be used to look up the model's class name through
1257
1255
  `Store`'s modelFor method.
1258
- `modelName` is generated for you by EmberData. It will be a lowercased, dasherized string.
1256
+ `modelName` is generated for you by WarpDrive. It will be a lowercased, dasherized string.
1259
1257
  For example:
1260
1258
  ```javascript
1261
1259
  store.modelFor('post').modelName; // 'post'
@@ -2337,4 +2335,4 @@ function getModelFactory(store, type) {
2337
2335
  }
2338
2336
  return factory;
2339
2337
  }
2340
- export { Model as M, RecordState as R, _save as _, save as a, buildSchema as b, _reload as c, reload as d, _destroyRecord as e, destroyRecord as f, deleteRecord as g, hasMany as h, changedAttributes as i, belongsTo as j, createSnapshot as k, getModelFactory as l, restoreDeprecatedModelRequestBehaviors as m, rollbackAttributes as r, serialize as s, unloadRecord as u };
2338
+ export { Model as M, RecordState as R, _save as _, save as a, buildSchema as b, _reload as c, reload as d, _destroyRecord as e, destroyRecord as f, getModelFactory as g, hasMany as h, deleteRecord as i, changedAttributes as j, belongsTo as k, createSnapshot as l, restoreDeprecatedModelRequestBehaviors as m, rollbackAttributes as r, serialize as s, unloadRecord as u };
@@ -1,7 +1,7 @@
1
1
  import { warn } from '@ember/debug';
2
2
  import { macroCondition, getGlobalConfig } from '@embroider/macros';
3
3
  import '@warp-drive/core/reactive/-private';
4
- import "./-private-8UmnAf9J.js";
4
+ import "./-private-B1pSSN52.js";
5
5
  import '@warp-drive/core/store/-private';
6
6
  const newline = /\r?\n/;
7
7
  function parseResponseHeaders(headersString) {
@@ -1,6 +1,6 @@
1
1
  import { warn } from '@ember/debug';
2
2
  import { dasherize, pluralize, singularize } from '@warp-drive/utilities/string';
3
- import { J as JSONSerializer } from "../json-DziiodPf.js";
3
+ import { J as JSONSerializer } from "../json-BHxlccxF.js";
4
4
  import { macroCondition, getGlobalConfig } from '@embroider/macros';
5
5
 
6
6
  /* eslint-disable @typescript-eslint/no-unsafe-return */
@@ -10,8 +10,6 @@ import { macroCondition, getGlobalConfig } from '@embroider/macros';
10
10
  /* eslint-disable @typescript-eslint/no-unsafe-call */
11
11
  const JSONAPISerializer = JSONSerializer.extend({
12
12
  /**
13
- @param {Object} documentHash
14
- @return {Object}
15
13
  @private
16
14
  */
17
15
  _normalizeDocumentHelper(documentHash) {
@@ -41,8 +39,6 @@ const JSONAPISerializer = JSONSerializer.extend({
41
39
  return documentHash;
42
40
  },
43
41
  /**
44
- @param {Object} relationshipDataHash
45
- @return {Object}
46
42
  @private
47
43
  */
48
44
  _normalizeRelationshipDataHelper(relationshipDataHash) {
@@ -50,8 +46,6 @@ const JSONAPISerializer = JSONSerializer.extend({
50
46
  return relationshipDataHash;
51
47
  },
52
48
  /**
53
- @param {Object} resourceHash
54
- @return {Object}
55
49
  @private
56
50
  */
57
51
  _normalizeResourceHelper(resourceHash) {
@@ -88,21 +82,13 @@ const JSONAPISerializer = JSONSerializer.extend({
88
82
  /**
89
83
  Normalize some data and push it into the store.
90
84
  @public
91
- @param {Store} store
92
- @param {Object} payload
93
85
  */
94
86
  pushPayload(store, payload) {
95
87
  const normalizedPayload = this._normalizeDocumentHelper(payload);
96
88
  store.push(normalizedPayload);
97
89
  },
98
90
  /**
99
- @param {Store} store
100
- @param {Model} primaryModelClass
101
- @param {Object} payload
102
- @param {String|Number} id
103
- @param {String} requestType
104
- @param {Boolean} isSingle
105
- @return {Object} JSON-API Document
91
+ @return A {json:api} Document
106
92
  @private
107
93
  */
108
94
  _normalizeResponse(store, primaryModelClass, payload, id, requestType, isSingle) {
@@ -144,8 +130,6 @@ const JSONAPISerializer = JSONSerializer.extend({
144
130
  Returns a relationship formatted as a JSON-API "relationship object".
145
131
  http://jsonapi.org/format/#document-resource-object-relationships
146
132
  @public
147
- @param {Object} relationshipHash
148
- @return {Object}
149
133
  */
150
134
  extractRelationship(relationshipHash) {
151
135
  if (Array.isArray(relationshipHash.data)) {
@@ -164,9 +148,6 @@ const JSONAPISerializer = JSONSerializer.extend({
164
148
  Returns the resource's relationships formatted as a JSON-API "relationships object".
165
149
  http://jsonapi.org/format/#document-resource-object-relationships
166
150
  @public
167
- @param {Object} modelClass
168
- @param {Object} resourceHash
169
- @return {Object}
170
151
  */
171
152
  extractRelationships(modelClass, resourceHash) {
172
153
  const relationships = {};
@@ -191,9 +172,6 @@ const JSONAPISerializer = JSONSerializer.extend({
191
172
  return relationships;
192
173
  },
193
174
  /**
194
- @param {Model} modelClass
195
- @param {Object} resourceHash
196
- @return {String}
197
175
  @private
198
176
  */
199
177
  _extractType(modelClass, resourceHash) {
@@ -205,8 +183,7 @@ const JSONAPISerializer = JSONSerializer.extend({
205
183
  For example the key `posts` would be converted to `post` and the
206
184
  key `studentAssesments` would be converted to `student-assesment`.
207
185
  @public
208
- @param {String} key
209
- @return {String} the model's modelName
186
+ @return the model's modelName
210
187
  */
211
188
  modelNameFromPayloadKey(key) {
212
189
  return dasherize(singularize(key));
@@ -216,8 +193,6 @@ const JSONAPISerializer = JSONSerializer.extend({
216
193
  For example `post` would be converted to `posts` and
217
194
  `student-assesment` would be converted to `student-assesments`.
218
195
  @public
219
- @param {String} modelName
220
- @return {String}
221
196
  */
222
197
  payloadKeyFromModelName(modelName) {
223
198
  return pluralize(modelName);
@@ -267,9 +242,7 @@ const JSONAPISerializer = JSONSerializer.extend({
267
242
  }
268
243
  ```
269
244
  @public
270
- @param {String} key
271
- @param {String} method
272
- @return {String} normalized key
245
+ @return normalized key
273
246
  */
274
247
  keyForAttribute(key, method) {
275
248
  return dasherize(key);
@@ -292,10 +265,7 @@ const JSONAPISerializer = JSONSerializer.extend({
292
265
  }
293
266
  ```
294
267
  @public
295
- @param {String} key
296
- @param {String} typeClass
297
- @param {String} method
298
- @return {String} normalized key
268
+ @return the normalized key
299
269
  */
300
270
  keyForRelationship(key, typeClass, method) {
301
271
  return dasherize(key);
@@ -426,9 +396,6 @@ const JSONAPISerializer = JSONSerializer.extend({
426
396
  }
427
397
  ```
428
398
  @public
429
- @param {Snapshot} snapshot
430
- @param {Object} options
431
- @return {Object} json
432
399
  */
433
400
  serialize(snapshot, options) {
434
401
  // @ts-expect-error untyped
@@ -467,6 +434,7 @@ const JSONAPISerializer = JSONSerializer.extend({
467
434
  // @ts-expect-error untyped
468
435
  if (this._canSerialize(name)) {
469
436
  const belongsTo = snapshot.belongsTo(name);
437
+ // @ts-expect-error not narrowed
470
438
  const belongsToIsNotNew = belongsTo && !belongsTo.isNew;
471
439
  if (belongsTo === null || belongsToIsNotNew) {
472
440
  json.relationships = json.relationships || {};
@@ -480,11 +448,13 @@ const JSONAPISerializer = JSONSerializer.extend({
480
448
  }
481
449
  let data = null;
482
450
  if (belongsTo) {
451
+ // @ts-expect-error not narrowed
483
452
  const payloadType = this.payloadKeyFromModelName(belongsTo.modelName);
484
453
 
485
454
  // @ts-expect-error untyped
486
455
  data = {
487
456
  type: payloadType,
457
+ // @ts-expect-error not narrowed
488
458
  id: belongsTo.id
489
459
  };
490
460
  }
@@ -512,13 +482,16 @@ const JSONAPISerializer = JSONSerializer.extend({
512
482
  }
513
483
 
514
484
  // only serialize has many relationships that are not new
485
+ // @ts-expect-error not narrowed
515
486
  const nonNewHasMany = hasMany.filter(item => !item.isNew);
516
487
  const data = new Array(nonNewHasMany.length);
517
488
  for (let i = 0; i < nonNewHasMany.length; i++) {
518
489
  const item = hasMany[i];
490
+ // @ts-expect-error not narrowed
519
491
  const payloadType = this.payloadKeyFromModelName(item.modelName);
520
492
  data[i] = {
521
493
  type: payloadType,
494
+ // @ts-expect-error not narrowed
522
495
  id: item.id
523
496
  };
524
497
  }
@@ -2,5 +2,5 @@ import '@ember/application';
2
2
  import '@ember/debug';
3
3
  import '@warp-drive/utilities/string';
4
4
  import '../serializer.js';
5
- export { J as JSONSerializer } from "../json-DziiodPf.js";
5
+ export { J as JSONSerializer } from "../json-BHxlccxF.js";
6
6
  import '@embroider/macros';
@@ -1,6 +1,6 @@
1
1
  import { warn } from '@ember/debug';
2
2
  import { camelize, dasherize, singularize } from '@warp-drive/utilities/string';
3
- import { J as JSONSerializer, c as coerceId } from "../json-DziiodPf.js";
3
+ import { J as JSONSerializer, c as coerceId } from "../json-BHxlccxF.js";
4
4
  import { macroCondition, getGlobalConfig } from '@embroider/macros';
5
5
  import Mixin from '@ember/object/mixin';
6
6
 
@@ -96,11 +96,6 @@ import Mixin from '@ember/object/mixin';
96
96
  are. Please read the docs for the methods this mixin provides, in case you need
97
97
  to modify it to fit your specific needs.**
98
98
 
99
- For example, review the docs for each method of this mixin:
100
- * [normalize](/ember-data/release/classes/EmbeddedRecordsMixin/methods/normalize?anchor=normalize)
101
- * [serializeBelongsTo](/ember-data/release/classes/EmbeddedRecordsMixin/methods/serializeBelongsTo?anchor=serializeBelongsTo)
102
- * [serializeHasMany](/ember-data/release/classes/EmbeddedRecordsMixin/methods/serializeHasMany?anchor=serializeHasMany)
103
-
104
99
  @class EmbeddedRecordsMixin
105
100
  @public
106
101
  */
@@ -583,13 +578,11 @@ function makeArray(value) {
583
578
  }
584
579
 
585
580
  /**
586
- * <blockquote style="margin: 1em; padding: .1em 1em .1em 1em; border-left: solid 1em #E34C32; background: #e0e0e0;">
587
- <p>
588
- ⚠️ <strong>This is LEGACY documentation</strong> for a feature that is no longer encouraged to be used.
581
+ * :::danger
582
+ ⚠️ **This is LEGACY documentation** for a feature that is no longer encouraged to be used.
589
583
  If starting a new app or thinking of implementing a new adapter, consider writing a
590
- <a href="/ember-data/release/classes/%3CInterface%3E%20Handler">Handler</a> instead to be used with the <a href="https://github.com/warp-drive-data/warp-drive/tree/main/packages/request#readme">RequestManager</a>
591
- </p>
592
- </blockquote>
584
+ {@link Handler} instead to be used with the {@link RequestManager}
585
+ :::
593
586
 
594
587
  Normally, applications will use the `RESTSerializer` by implementing
595
588
  the `normalize` method.
@@ -79,11 +79,13 @@ import EmberObject from '@ember/object';
79
79
  */
80
80
  const Transform = EmberObject;
81
81
 
82
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
83
+
82
84
  /**
83
85
  The `BooleanTransform` class is used to serialize and deserialize
84
86
  boolean attributes on Ember Data record objects. This transform is
85
- used when `boolean` is passed as the type parameter to the
86
- [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.
87
+ used when `'boolean'` is passed as the type parameter to the
88
+ {@link attr}function.
87
89
 
88
90
  Usage
89
91
 
@@ -139,11 +141,13 @@ class BooleanTransform {
139
141
  }
140
142
  }
141
143
 
144
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
145
+
142
146
  /**
143
147
  The `DateTransform` class is used to serialize and deserialize
144
148
  date attributes on Ember Data record objects. This transform is used
145
- when `date` is passed as the type parameter to the
146
- [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function. It uses the [`ISO 8601`](https://en.wikipedia.org/wiki/ISO_8601)
149
+ when `'date'` is passed as the type parameter to the
150
+ {@link attr} function. It uses the [`ISO 8601`](https://en.wikipedia.org/wiki/ISO_8601)
147
151
  standard.
148
152
 
149
153
  ```js [app/models/score.js]
@@ -190,6 +194,9 @@ class DateTransform {
190
194
  return new this();
191
195
  }
192
196
  }
197
+
198
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
199
+
193
200
  function isNumber(value) {
194
201
  return value === value && value !== Infinity && value !== -Infinity;
195
202
  }
@@ -197,7 +204,7 @@ function isNumber(value) {
197
204
  The `NumberTransform` class is used to serialize and deserialize
198
205
  numeric attributes on Ember Data record objects. This transform is
199
206
  used when `number` is passed as the type parameter to the
200
- [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.
207
+ {@link attr} function.
201
208
 
202
209
  Usage
203
210
 
@@ -235,11 +242,13 @@ class NumberTransform {
235
242
  }
236
243
  }
237
244
 
245
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
246
+
238
247
  /**
239
248
  The `StringTransform` class is used to serialize and deserialize
240
249
  string attributes on Ember Data record objects. This transform is
241
250
  used when `string` is passed as the type parameter to the
242
- [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.
251
+ {@link attr} function.
243
252
 
244
253
  Usage
245
254
 
@@ -5,13 +5,11 @@ import { a as decorateFieldV2, i as initializeDeferredDecorator } from "./runtim
5
5
  /**
6
6
  ## Overview
7
7
 
8
- <blockquote style="margin: 1em; padding: .1em 1em .1em 1em; border-left: solid 1em #E34C32; background: #e0e0e0;">
9
- <p>
10
- ⚠️ <strong>This is LEGACY documentation</strong> for a feature that is no longer encouraged to be used.
8
+ :::danger
9
+ ⚠️ **This is LEGACY documentation** for a feature that is no longer encouraged to be used.
11
10
  If starting a new app or thinking of implementing a new serializer, consider writing a
12
- <a href="/ember-data/release/classes/%3CInterface%3E%20Handler">Handler</a> instead to be used with the <a href="https://github.com/warp-drive-data/warp-drive/tree/main/packages/request#readme">RequestManager</a>
13
- </p>
14
- </blockquote>
11
+ {@link Handler} instead to be used with the {@link RequestManager}
12
+ :::
15
13
 
16
14
  In order to properly manage and present your data, WarpDrive
17
15
  needs to understand the structure of data it receives.
@@ -20,14 +18,14 @@ import { a as decorateFieldV2, i as initializeDeferredDecorator } from "./runtim
20
18
  the format WarpDrive understands.
21
19
 
22
20
  Data received from an API response is **normalized** into
23
- [JSON:API](https://jsonapi.org/) (the format used internally
21
+ [{json:api}](https://jsonapi.org/) (the format used internally
24
22
  by WarpDrive), while data sent to an API is **serialized**
25
23
  into the format the API expects.
26
24
 
27
25
  ### Implementing a Serializer
28
26
 
29
27
  There are only two required serializer methods, one for
30
- normalizing data from the server API format into JSON:API, and
28
+ normalizing data from the server API format into {json:api}, and
31
29
  another for serializing records via `Snapshots` into the expected
32
30
  server API format.
33
31
 
@@ -73,7 +71,7 @@ import { a as decorateFieldV2, i as initializeDeferredDecorator } from "./runtim
73
71
  // app/serializers/application.js
74
72
  ```
75
73
 
76
- Most requests in @warp-drive/legacy are made with respect to a particular `type` (or `modelName`)
74
+ Most requests in `@warp-drive/legacy` are made with respect to a particular `type` (or `modelName`)
77
75
  (e.g., "get me the full collection of **books**" or "get me the **employee** whose id is 37"). We
78
76
  refer to this as the **primary** resource `type`.
79
77
 
@@ -109,7 +107,6 @@ import { a as decorateFieldV2, i as initializeDeferredDecorator } from "./runtim
109
107
 
110
108
  @module
111
109
  */
112
-
113
110
  const service = s.service ?? s.inject;
114
111
 
115
112
  /**
@@ -127,8 +124,7 @@ const service = s.service ?? s.inject;
127
124
 
128
125
  * `normalize()`
129
126
 
130
- For an example implementation, see
131
- [JSONSerializer](JSONSerializer), the included JSON serializer.
127
+ For an example implementation, see the included {@link JSONSerializer}.
132
128
 
133
129
  @class Serializer
134
130
  @public
package/dist/store.js CHANGED
@@ -524,6 +524,9 @@ function restoreDeprecatedStoreBehaviors(StoreKlass) {
524
524
  });
525
525
  return promise.then(document => document.content);
526
526
  };
527
+
528
+ // do not put a ts-expect-error here, because typedoc will fail to
529
+ // build due to this error only occurring when references are in use in the editor
527
530
  StoreKlass.prototype.getReference = function (resource, id) {
528
531
  macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
529
532
  if (!test) {
package/logos/README.md CHANGED
@@ -1,4 +1,4 @@
1
1
  # Autogeneration Notice
2
2
 
3
- This directory is maintained in the root of the monorepo and sync'd to public
4
- repositories by running `bun sync-logos`
3
+ This directory is maintained in the root of the monorepo in `/logos/synced` and sync'd
4
+ to public repositories by running `bun sync-logos`
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1498" height="1047" fill="none" viewBox="0 0 1498 1047"><g filter="url(#a)"><path fill="url(#b)" d="M132 175.075C132 149.076 153.138 128 179.213 128H1318.23c26.08 0 47.22 21.076 47.22 47.075v688.85c0 25.999-21.14 47.075-47.22 47.075H179.213C153.138 911 132 889.924 132 863.925z"/><path fill="#201328" d="M1043.4 587.312c0-39.962 30.84-72.357 68.87-72.357h53.09c38.04 0 68.88-32.395 68.88-72.357v-92.651c0-39.962-30.84-72.358-68.88-72.358h-53.09c-38.01 0-68.82 32.351-68.87 72.275v92.734c0 39.962-30.83 72.357-68.869 72.357h-53.089c-38.036 0-68.871-32.395-68.871-72.357v-87.409c0-39.962-30.835-72.358-68.872-72.358h-51.654c-38.037 0-68.872 32.396-68.872 72.358v87.409c0 39.962-30.835 72.357-68.872 72.357h-53.088c-38.037 0-68.872-32.395-68.872-72.357v-92.652c0-39.961-30.835-72.357-68.872-72.357h-53.088c-38.037 0-68.872 32.396-68.872 72.357v92.652c0 39.962 30.835 72.357 68.872 72.357h53.088c38.037 0 68.872 32.395 68.872 72.357v101.741c0 39.962 30.835 72.358 68.872 72.358h53.088c38.037 0 68.872-32.396 68.872-72.358V587.312c0-39.962 30.835-72.357 68.872-72.357h51.654c38.037 0 68.872 32.395 68.872 72.357v101.741c0 39.962 30.835 72.358 68.871 72.358h53.089c38.039 0 68.869-32.396 68.869-72.358z"/></g><defs><linearGradient id="b" x1="748.724" x2="1167.5" y1="128" y2="1070.23" gradientUnits="userSpaceOnUse"><stop stop-color="#ffc474"/><stop offset="1" stop-color="#ff9809"/></linearGradient><filter id="a" width="1497.45" height="1047" x="0" y="0" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="4"/><feGaussianBlur stdDeviation="66"/><feComposite in2="hardAlpha" operator="out"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_757_188"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="4"/><feGaussianBlur stdDeviation="18"/><feComposite in2="hardAlpha" operator="out"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/><feBlend in2="effect1_dropShadow_757_188" result="effect2_dropShadow_757_188"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="4"/><feGaussianBlur stdDeviation="2"/><feComposite in2="hardAlpha" operator="out"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/><feBlend in2="effect2_dropShadow_757_188" result="effect3_dropShadow_757_188"/><feBlend in="SourceGraphic" in2="effect3_dropShadow_757_188" result="shape"/></filter></defs></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="2081" height="200" fill="none" viewBox="0 0 2081 200"><path fill="#000" d="M2064.89 185.359c-15.57 5.16-31.15 8.846-46.72 11.058q-23.22 3.456-47.55 3.456c-20.73 0-39.21-2.212-55.43-6.635q-24.18-6.773-40.77-19.49c-11.06-8.478-19.49-18.844-25.3-31.1-5.8-12.256-8.71-26.125-8.71-41.606 0-14.375 2.91-27.69 8.71-39.947 5.9-12.348 14.19-23.037 24.88-32.068 10.78-9.123 23.78-16.218 38.98-21.286C1928.19 2.58 1945.14 0 1963.85 0c17.23 0 32.99 2.35 47.27 7.05 14.38 4.607 26.68 11.472 36.91 20.595q15.48 13.684 23.91 33.727c5.71 13.361 8.57 28.75 8.57 46.167v12.716h-187.16a48.3 48.3 0 0 0 8.16 16.449c3.87 4.976 9.08 9.215 15.62 12.717 6.54 3.501 14.56 6.22 24.05 8.155 9.58 1.935 21.01 2.903 34.28 2.903 9.4 0 18.61-.553 27.64-1.659 9.04-1.198 17.47-2.719 25.3-4.562q11.745-2.902 21.15-6.358c6.36-2.304 11.47-4.607 15.34-6.911zm-35.38-102.7c-.47-4.7-1.89-9.538-4.29-14.514-2.3-5.069-5.99-9.63-11.06-13.685s-11.7-7.371-19.9-9.952q-12.3-4.008-30.69-4.008-17.28 0-29.85 4.285-12.585 4.284-21.15 10.643c-5.62 4.239-10 8.8-13.13 13.684-3.14 4.884-5.16 9.4-6.09 13.546zm-284.63 112.099h-59.71l-96.06-189.92h57.22l69.11 142.924 68.98-142.924h57.22zm-238.29 0V4.838h51.28v189.92zm-32.63-146.932c-1.38-.461-3.4-1.06-6.08-1.797q-3.87-1.245-9.12-2.35-5.25-1.244-11.61-2.073c-4.15-.553-8.43-.83-12.86-.83-9.21 0-17.83 1.152-25.84 3.456q-11.895 3.317-22.26 8.984a125.3 125.3 0 0 0-19.35 12.717c-5.9 4.7-11.33 9.537-16.31 14.514v114.311h-51.28V4.838h51.28v30.824c6.17-4.608 12.49-9.03 18.94-13.27a163 163 0 0 1 20.32-11.472c7.09-3.318 14.56-5.944 22.39-7.88 7.83-2.026 16.12-3.04 24.88-3.04 3.32 0 6.68.184 10.09.553 3.5.276 6.86.645 10.09 1.106 3.32.46 6.4.967 9.26 1.52s5.35 1.106 7.46 1.659zM1263.71 99.66c0 12.164-1.33 22.991-4 32.483-2.68 9.399-6.45 17.6-11.34 24.604-4.79 7.003-10.6 12.947-17.42 17.831q-10.08 7.325-22.53 11.749c-8.29 2.948-17.23 5.114-26.81 6.496q-14.37 1.935-30 1.935h-120.53V4.838h120.26c10.41 0 20.41.691 29.99 2.073 9.59 1.29 18.52 3.41 26.82 6.359 8.38 2.948 15.99 6.865 22.8 11.749 6.82 4.791 12.63 10.735 17.42 17.83 4.89 7.004 8.66 15.205 11.34 24.605 2.67 9.399 4 20.134 4 32.206m-51.69 0q0-13.685-3.6-23.775c-2.3-6.727-6.08-12.256-11.33-16.587-5.16-4.423-11.93-7.694-20.32-9.814-8.38-2.211-18.61-3.317-30.68-3.317h-63.73v107.262h63.73c12.07 0 22.3-1.06 30.68-3.179 8.39-2.212 15.16-5.529 20.32-9.952 5.25-4.515 9.03-10.137 11.33-16.864q3.6-10.09 3.6-23.774M986.574 63.169q0 14.237-4.699 25.157-4.562 10.92-14.514 18.383-9.952 7.464-25.71 11.335-15.62 3.732-37.735 3.732h-85.285v72.982h-17.278V4.838h102.563q22.116 0 37.735 3.87 15.758 3.732 25.71 11.058t14.514 18.246q4.7 10.92 4.699 25.157m-17.831 0q0-13.546-4.561-21.84-4.423-8.294-13.823-12.716-9.26-4.562-23.636-6.082-14.237-1.52-33.865-1.52h-74.227v84.593h74.227q7.602 0 16.172.138 8.709 0 17.14-.83 8.432-.967 16.034-3.179 7.74-2.349 13.546-7.05 5.945-4.699 9.399-12.301 3.594-7.602 3.594-19.213M766.455 19.49q-4.01-1.244-11.197-2.627-7.049-1.52-18.245-1.52-15.481 0-29.166 3.87-13.545 3.732-25.295 10.229a126.3 126.3 0 0 0-21.563 15.205q-9.951 8.57-17.969 18.245v131.866h-17.278V4.838h17.278V43.54a166 166 0 0 1 20.043-17.555q10.92-8.017 22.945-13.684a125.8 125.8 0 0 1 25.157-8.985Q724.435 0 738.533 0q4.839 0 8.708.276 3.87.14 7.05.553 3.317.277 6.22.691 2.902.416 5.944.968zm-220.33 175.268v-21.01q-9.952 5.39-22.669 9.952-12.579 4.562-26.677 7.879-13.96 3.318-28.751 5.114-14.79 1.797-29.027 1.797-18.522 0-33.312-3.317-14.652-3.318-24.881-9.814-10.228-6.635-15.757-16.31-5.529-9.814-5.529-22.669 0-12.717 6.358-22.393 6.497-9.813 18.384-17.001 11.887-7.326 28.612-12.302 16.864-5.115 37.598-8.57 20.733-3.594 44.784-5.806 24.19-2.349 50.867-3.87V61.925q0-8.846-3.318-15.62-3.317-6.772-9.261-11.749-5.943-5.115-13.96-8.431-8.017-3.456-17.416-5.53-9.262-2.074-19.628-2.902a219 219 0 0 0-20.596-.968q-13.96 0-25.433 1.383-11.473 1.381-21.425 3.87-9.952 2.35-19.075 5.529a563 563 0 0 0-18.384 6.773V14.099q19.213-5.114 40.915-8.846 21.839-3.87 46.305-3.87 20.733 0 38.703 3.593 17.969 3.456 31.238 11.196 13.27 7.74 20.872 20.043 7.603 12.164 7.603 29.718v128.825zm0-102.977q-45.2 2.489-77.268 7.05-31.929 4.561-52.248 11.196-20.32 6.634-29.857 15.481-9.399 8.846-9.399 20.042 0 9.123 4.561 16.173 4.7 7.049 13.408 11.887 8.708 4.7 21.148 7.188 12.44 2.349 27.922 2.349 9.123 0 18.798-.967a276 276 0 0 0 19.49-2.903 319 319 0 0 0 19.075-4.423q9.4-2.627 17.693-5.667t15.066-6.497q6.912-3.455 11.611-7.049zM180.245 4.838l67.73 176.098L318.193 4.838h19.213l-76.438 189.92h-25.71L168.634 23.222l-66.486 171.536h-25.71L0 4.838h19.213l70.218 176.098L157.023 4.838z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="2081" height="200" fill="none" viewBox="0 0 2081 200"><path fill="#fff" d="M2064.89 185.359c-15.57 5.16-31.15 8.846-46.72 11.058q-23.22 3.456-47.55 3.456c-20.73 0-39.21-2.212-55.43-6.635q-24.18-6.773-40.77-19.49c-11.06-8.478-19.49-18.844-25.3-31.1-5.8-12.256-8.71-26.125-8.71-41.606 0-14.375 2.91-27.69 8.71-39.947 5.9-12.348 14.19-23.037 24.88-32.068 10.78-9.123 23.78-16.218 38.98-21.286C1928.19 2.58 1945.14 0 1963.85 0c17.23 0 32.99 2.35 47.27 7.05 14.38 4.607 26.68 11.472 36.91 20.595q15.48 13.684 23.91 33.727c5.71 13.361 8.57 28.75 8.57 46.167v12.716h-187.16a48.3 48.3 0 0 0 8.16 16.449c3.87 4.976 9.08 9.215 15.62 12.717 6.54 3.501 14.56 6.22 24.05 8.155 9.58 1.935 21.01 2.903 34.28 2.903 9.4 0 18.61-.553 27.64-1.659 9.04-1.198 17.47-2.719 25.3-4.562q11.745-2.902 21.15-6.358c6.36-2.304 11.47-4.607 15.34-6.911zm-35.38-102.7c-.47-4.7-1.89-9.538-4.29-14.514-2.3-5.069-5.99-9.63-11.06-13.685s-11.7-7.371-19.9-9.952q-12.3-4.008-30.69-4.008-17.28 0-29.85 4.285-12.585 4.284-21.15 10.643c-5.62 4.239-10 8.8-13.13 13.684-3.14 4.884-5.16 9.4-6.09 13.546zm-284.63 112.099h-59.71l-96.06-189.92h57.22l69.11 142.924 68.98-142.924h57.22zm-238.29 0V4.838h51.28v189.92zm-32.63-146.932c-1.38-.461-3.4-1.06-6.08-1.797q-3.87-1.245-9.12-2.35-5.25-1.244-11.61-2.073c-4.15-.553-8.43-.83-12.86-.83-9.21 0-17.83 1.152-25.84 3.456q-11.895 3.317-22.26 8.984a125.3 125.3 0 0 0-19.35 12.717c-5.9 4.7-11.33 9.537-16.31 14.514v114.311h-51.28V4.838h51.28v30.824c6.17-4.608 12.49-9.03 18.94-13.27a163 163 0 0 1 20.32-11.472c7.09-3.318 14.56-5.944 22.39-7.88 7.83-2.026 16.12-3.04 24.88-3.04 3.32 0 6.68.184 10.09.553 3.5.276 6.86.645 10.09 1.106 3.32.46 6.4.967 9.26 1.52s5.35 1.106 7.46 1.659zM1263.71 99.66c0 12.164-1.33 22.991-4 32.483-2.68 9.399-6.45 17.6-11.34 24.604-4.79 7.003-10.6 12.947-17.42 17.831q-10.08 7.325-22.53 11.749c-8.29 2.948-17.23 5.114-26.81 6.496q-14.37 1.935-30 1.935h-120.53V4.838h120.26c10.41 0 20.41.691 29.99 2.073 9.59 1.29 18.52 3.41 26.82 6.359 8.38 2.948 15.99 6.865 22.8 11.749 6.82 4.791 12.63 10.735 17.42 17.83 4.89 7.004 8.66 15.205 11.34 24.605 2.67 9.399 4 20.134 4 32.206m-51.69 0q0-13.685-3.6-23.775c-2.3-6.727-6.08-12.256-11.33-16.587-5.16-4.423-11.93-7.694-20.32-9.814-8.38-2.211-18.61-3.317-30.68-3.317h-63.73v107.262h63.73c12.07 0 22.3-1.06 30.68-3.179 8.39-2.212 15.16-5.529 20.32-9.952 5.25-4.515 9.03-10.137 11.33-16.864q3.6-10.09 3.6-23.774M986.574 63.169q0 14.237-4.699 25.157-4.562 10.92-14.514 18.383-9.952 7.464-25.71 11.335-15.62 3.732-37.735 3.732h-85.285v72.982h-17.278V4.838h102.563q22.116 0 37.735 3.87 15.758 3.732 25.71 11.058t14.514 18.246q4.7 10.92 4.699 25.157m-17.831 0q0-13.546-4.561-21.84-4.423-8.294-13.823-12.716-9.26-4.562-23.636-6.082-14.237-1.52-33.865-1.52h-74.227v84.593h74.227q7.602 0 16.172.138 8.709 0 17.14-.83 8.432-.967 16.034-3.179 7.74-2.349 13.546-7.05 5.945-4.699 9.399-12.301 3.594-7.602 3.594-19.213M766.455 19.49q-4.01-1.244-11.197-2.627-7.049-1.52-18.245-1.52-15.481 0-29.166 3.87-13.545 3.732-25.295 10.229a126.3 126.3 0 0 0-21.563 15.205q-9.951 8.57-17.969 18.245v131.866h-17.278V4.838h17.278V43.54a166 166 0 0 1 20.043-17.555q10.92-8.017 22.945-13.684a125.8 125.8 0 0 1 25.157-8.985Q724.435 0 738.533 0q4.839 0 8.708.276 3.87.14 7.05.553 3.317.277 6.22.691 2.902.416 5.944.968zm-220.33 175.268v-21.01q-9.952 5.39-22.669 9.952-12.579 4.562-26.677 7.879-13.96 3.318-28.751 5.114-14.79 1.797-29.027 1.797-18.522 0-33.312-3.317-14.652-3.318-24.881-9.814-10.228-6.635-15.757-16.31-5.529-9.814-5.529-22.669 0-12.717 6.358-22.393 6.497-9.813 18.384-17.001 11.887-7.326 28.612-12.302 16.864-5.115 37.598-8.57 20.733-3.594 44.784-5.806 24.19-2.349 50.867-3.87V61.925q0-8.846-3.318-15.62-3.317-6.772-9.261-11.749-5.943-5.115-13.96-8.431-8.017-3.456-17.416-5.53-9.262-2.074-19.628-2.902a219 219 0 0 0-20.596-.968q-13.96 0-25.433 1.383-11.473 1.381-21.425 3.87-9.952 2.35-19.075 5.529a563 563 0 0 0-18.384 6.773V14.099q19.213-5.114 40.915-8.846 21.839-3.87 46.305-3.87 20.733 0 38.703 3.593 17.969 3.456 31.238 11.196 13.27 7.74 20.872 20.043 7.603 12.164 7.603 29.718v128.825zm0-102.977q-45.2 2.489-77.268 7.05-31.929 4.561-52.248 11.196-20.32 6.634-29.857 15.481-9.399 8.846-9.399 20.042 0 9.123 4.561 16.173 4.7 7.049 13.408 11.887 8.708 4.7 21.148 7.188 12.44 2.349 27.922 2.349 9.123 0 18.798-.967a276 276 0 0 0 19.49-2.903 319 319 0 0 0 19.075-4.423q9.4-2.627 17.693-5.667t15.066-6.497q6.912-3.455 11.611-7.049zM180.245 4.838l67.73 176.098L318.193 4.838h19.213l-76.438 189.92h-25.71L168.634 23.222l-66.486 171.536h-25.71L0 4.838h19.213l70.218 176.098L157.023 4.838z"/></svg>