angular-odata 0.151.0 → 0.153.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/fesm2022/angular-odata.mjs +36 -39
  2. package/fesm2022/angular-odata.mjs.map +1 -1
  3. package/package.json +1 -1
  4. package/schematics/apigen/angular/api-config.js +1 -0
  5. package/schematics/apigen/angular/api-config.js.map +1 -1
  6. package/schematics/apigen/angular/base.d.ts +7 -7
  7. package/schematics/apigen/angular/base.js +1 -1
  8. package/schematics/apigen/angular/base.js.map +1 -1
  9. package/schematics/apigen/angular/collection.d.ts +1 -1
  10. package/schematics/apigen/angular/entity.d.ts +2 -2
  11. package/schematics/apigen/angular/entity.js +2 -2
  12. package/schematics/apigen/angular/entity.js.map +1 -1
  13. package/schematics/apigen/angular/enum.d.ts +1 -1
  14. package/schematics/apigen/angular/model.d.ts +3 -3
  15. package/schematics/apigen/angular/model.js +1 -1
  16. package/schematics/apigen/angular/model.js.map +1 -1
  17. package/schematics/apigen/angular/package.d.ts +4 -4
  18. package/schematics/apigen/angular/package.js +3 -1
  19. package/schematics/apigen/angular/package.js.map +1 -1
  20. package/schematics/apigen/angular/service.d.ts +3 -3
  21. package/schematics/apigen/angular/service.js +2 -2
  22. package/schematics/apigen/angular/service.js.map +1 -1
  23. package/schematics/apigen/files/api-config/__fileName__.ts +6 -4
  24. package/schematics/apigen/index.js +1 -1
  25. package/schematics/apigen/index.js.map +1 -1
  26. package/schematics/apigen/schema.d.ts +1 -0
  27. package/schematics/apigen/schema.json +6 -1
  28. package/schematics/collection.json +5 -0
  29. package/schematics/metadata/index.d.ts +3 -0
  30. package/schematics/metadata/index.js +41 -0
  31. package/schematics/metadata/index.js.map +1 -0
  32. package/schematics/{apigen/metadata → metadata}/metadata.d.ts +6 -6
  33. package/schematics/{apigen/metadata → metadata}/metadata.js +2 -2
  34. package/schematics/metadata/metadata.js.map +1 -0
  35. package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-annotation.js.map +1 -1
  36. package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-entity-container.js.map +1 -1
  37. package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-entity-set.js.map +1 -1
  38. package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-enum-type.js.map +1 -1
  39. package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-function-action.js.map +1 -1
  40. package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-navigation-property-binding.js.map +1 -1
  41. package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-reference.js.map +1 -1
  42. package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-schema.js.map +1 -1
  43. package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-singleton.js.map +1 -1
  44. package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-structural-property.js.map +1 -1
  45. package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-structured-type.js.map +1 -1
  46. package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-type-definition.js.map +1 -1
  47. package/schematics/{apigen/metadata/parser.d.ts → metadata/parser/index.d.ts} +1 -1
  48. package/schematics/{apigen/metadata/parser.js → metadata/parser/index.js} +2 -2
  49. package/schematics/metadata/parser/index.js.map +1 -0
  50. package/schematics/metadata/schema.d.ts +5 -0
  51. package/schematics/metadata/schema.js +3 -0
  52. package/schematics/metadata/schema.js.map +1 -0
  53. package/schematics/metadata/schema.json +26 -0
  54. package/types/angular-odata.d.ts +2 -1
  55. package/schematics/apigen/metadata/index.d.ts +0 -1
  56. package/schematics/apigen/metadata/index.js +0 -18
  57. package/schematics/apigen/metadata/index.js.map +0 -1
  58. package/schematics/apigen/metadata/metadata.js.map +0 -1
  59. package/schematics/apigen/metadata/parser.js.map +0 -1
  60. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-annotation.d.ts +0 -0
  61. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-annotation.js +0 -0
  62. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-entity-container.d.ts +0 -0
  63. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-entity-container.js +0 -0
  64. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-entity-set.d.ts +0 -0
  65. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-entity-set.js +0 -0
  66. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-enum-type.d.ts +0 -0
  67. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-enum-type.js +0 -0
  68. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-function-action.d.ts +0 -0
  69. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-function-action.js +0 -0
  70. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-navigation-property-binding.d.ts +0 -0
  71. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-navigation-property-binding.js +0 -0
  72. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-reference.d.ts +0 -0
  73. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-reference.js +0 -0
  74. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-schema.d.ts +0 -0
  75. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-schema.js +0 -0
  76. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-singleton.d.ts +0 -0
  77. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-singleton.js +0 -0
  78. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-structural-property.d.ts +0 -0
  79. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-structural-property.js +0 -0
  80. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-structured-type.d.ts +0 -0
  81. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-structured-type.js +0 -0
  82. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-type-definition.d.ts +0 -0
  83. /package/schematics/{apigen/metadata → metadata/parser}/csdl/csdl-type-definition.js +0 -0
@@ -2519,10 +2519,10 @@ class ODataStructuredTypeParser extends ODataAnnotatable {
2519
2519
  }
2520
2520
  configure({ options, parserForType, }) {
2521
2521
  this.parserOptions = options;
2522
- if (this.base) {
2523
- const parent = parserForType(this.base);
2524
- parent.children.push(this);
2525
- this.parent = parent;
2522
+ if (this.base !== undefined) {
2523
+ this.parent = parserForType(this.base);
2524
+ if (this.parent !== undefined)
2525
+ this.parent.children.push(this);
2526
2526
  }
2527
2527
  this._fields.forEach((f) => f.configure({ options, parserForType }));
2528
2528
  }
@@ -2989,12 +2989,10 @@ class ODataStructuredType extends ODataParserSchemaElement {
2989
2989
  this.collection = config.collection;
2990
2990
  }
2991
2991
  configure({ options }) {
2992
- if (this.base) {
2993
- const parent = this.api.findStructuredType(this.base);
2994
- if (parent !== undefined) {
2995
- parent.children.push(this);
2996
- this.parent = parent;
2997
- }
2992
+ if (this.base !== undefined) {
2993
+ this.parent = this.api.findStructuredType(this.base);
2994
+ if (this.parent !== undefined)
2995
+ this.parent.children.push(this);
2998
2996
  }
2999
2997
  this.parser.configure({
3000
2998
  options,
@@ -12099,15 +12097,15 @@ class ODataModelOptions {
12099
12097
  return match;
12100
12098
  }
12101
12099
  configure({ options }) {
12102
- if (this.base) {
12103
- const parent = this.api.optionsForType(this.base);
12104
- parent.children.push(this);
12105
- this.parent = parent;
12100
+ if (this.base !== undefined) {
12101
+ this.parent = this.api.optionsForType(this.base);
12102
+ if (this.parent !== undefined)
12103
+ this.parent.children.push(this);
12106
12104
  }
12107
12105
  this.entitySet = this.api.findEntitySetForEntityType(this.type());
12108
12106
  let concurrencyFields = [];
12109
12107
  if (this.entitySet !== undefined) {
12110
- concurrencyFields = this.entitySet.annotatedValue(OPTIMISTIC_CONCURRENCY) || [];
12108
+ concurrencyFields = this.entitySet.annotatedValue(OPTIMISTIC_CONCURRENCY) ?? [];
12111
12109
  }
12112
12110
  this._fields.forEach((field) => {
12113
12111
  const concurrency = concurrencyFields.indexOf(field.field) !== -1;
@@ -12903,9 +12901,9 @@ class ODataApi {
12903
12901
  // Populate from Metadata
12904
12902
  populateFromMetadata;
12905
12903
  // Schemas
12906
- schemas;
12904
+ schemas = [];
12907
12905
  // References
12908
- references;
12906
+ references = [];
12909
12907
  // Models
12910
12908
  models = {};
12911
12909
  // Collections
@@ -12916,7 +12914,7 @@ class ODataApi {
12916
12914
  throw new Error("The 'serviceRootUrl' should not contain query string. Please use 'params' to add extra parameters");
12917
12915
  if (!this.serviceRootUrl.endsWith('/'))
12918
12916
  this.serviceRootUrl += '/';
12919
- this.metadataUrl = config.metadataUrl ?? `${this.serviceRootUrl}$metadata`;
12917
+ this.metadataUrl = config.metadataUrl ?? `${this.serviceRootUrl}${$METADATA}`;
12920
12918
  this.name = config.name;
12921
12919
  this.version = config.version ?? DEFAULT_VERSION;
12922
12920
  this.default = config.default ?? false;
@@ -12929,13 +12927,17 @@ class ODataApi {
12929
12927
  this.errorHandler = config.errorHandler;
12930
12928
  this.parsers = new Map(Object.entries(config.parsers ?? EDM_PARSERS));
12931
12929
  this.populateFromMetadata = config.populateFromMetadata ?? false;
12932
- this.schemas = (config.schemas ?? []).map((schema) => new ODataSchema(schema, this));
12933
- this.references = (config.references ?? []).map((reference) => new ODataReference(reference, this));
12934
- this.models = (config.models ?? {});
12935
- this.collections = (config.collections ?? {});
12930
+ this.populate(config);
12936
12931
  }
12937
12932
  initialize(requester) {
12938
12933
  this.requester = requester;
12934
+ return (this.populateFromMetadata
12935
+ ? firstValueFrom(this.metadata()
12936
+ .fetch()
12937
+ .pipe(map((metadata) => this.populate(metadata.toConfig()))))
12938
+ : Promise.resolve()).then(() => this.configure());
12939
+ }
12940
+ configure() {
12939
12941
  this.schemas.forEach((schema) => {
12940
12942
  schema.configure({
12941
12943
  options: this.options.parserOptions,
@@ -12951,24 +12953,19 @@ class ODataApi {
12951
12953
  }
12952
12954
  }
12953
12955
  });
12954
- return this.populateFromMetadata
12955
- ? firstValueFrom(this.metadata()
12956
- .fetch()
12957
- .pipe(map((metadata) => this.populate(metadata))))
12958
- : Promise.resolve(true);
12959
- }
12960
- populate(metadata) {
12961
- const config = metadata.toConfig();
12962
- this.version = config.version ?? DEFAULT_VERSION;
12963
- const schemas = (config.schemas ?? []).map((schema) => new ODataSchema(schema, this));
12964
- this.schemas = [...this.schemas, ...schemas];
12965
- schemas.forEach((schema) => {
12966
- schema.configure({
12967
- options: this.options.parserOptions,
12968
- });
12969
- });
12970
12956
  return true;
12971
12957
  }
12958
+ populate({ schemas, references, models, collections }) {
12959
+ const odataSchemas = (schemas ?? []).map((schema) => new ODataSchema(schema, this));
12960
+ //TODO: Merge duplicates
12961
+ this.schemas = [...this.schemas, ...odataSchemas];
12962
+ const odataReferences = (references ?? []).map((reference) => new ODataReference(reference, this));
12963
+ this.references = [...this.references, ...odataReferences];
12964
+ const odataModels = (models ?? {});
12965
+ this.models = { ...this.models, ...odataModels };
12966
+ const odataCollections = (collections ?? {});
12967
+ this.collections = { ...this.collections, ...odataCollections };
12968
+ }
12972
12969
  fromJson(json) {
12973
12970
  const segments = ODataPathSegments.fromJson(json.segments);
12974
12971
  const query = ODataQueryOptions.fromJson(json.options);
@@ -13614,7 +13611,7 @@ class ODataClient {
13614
13611
  if (value instanceof ODataResource)
13615
13612
  api = this.settings.findApiForTypes(value.types());
13616
13613
  else if (typeof value === 'string')
13617
- api = this.settings.findApiByName(value) || this.settings.findApiForType(value);
13614
+ api = this.settings.findApiByName(value) ?? this.settings.findApiForType(value);
13618
13615
  return api ?? this.settings.defaultApi();
13619
13616
  }
13620
13617
  defaultApi() {