@learncard/learn-cloud-plugin 1.0.5 → 1.1.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.
@@ -6959,6 +6959,7 @@ var require_types_cjs_development = __commonJS2({
6959
6959
  CredentialSubjectValidator: () => CredentialSubjectValidator2,
6960
6960
  CriteriaValidator: () => CriteriaValidator2,
6961
6961
  EncryptedCredentialRecordValidator: () => EncryptedCredentialRecordValidator2,
6962
+ EncryptedRecordValidator: () => EncryptedRecordValidator2,
6962
6963
  EndorsementCredentialValidator: () => EndorsementCredentialValidator2,
6963
6964
  EndorsementSubjectValidator: () => EndorsementSubjectValidator2,
6964
6965
  EvidenceValidator: () => EvidenceValidator2,
@@ -6984,6 +6985,7 @@ var require_types_cjs_development = __commonJS2({
6984
6985
  LCNSigningAuthorityForUserValidator: () => LCNSigningAuthorityForUserValidator2,
6985
6986
  LCNSigningAuthorityValidator: () => LCNSigningAuthorityValidator2,
6986
6987
  PaginatedEncryptedCredentialRecordsValidator: () => PaginatedEncryptedCredentialRecordsValidator2,
6988
+ PaginatedEncryptedRecordsValidator: () => PaginatedEncryptedRecordsValidator2,
6987
6989
  PaginationOptionsValidator: () => PaginationOptionsValidator2,
6988
6990
  PaginationResponseValidator: () => PaginationResponseValidator2,
6989
6991
  ProfileValidator: () => ProfileValidator2,
@@ -10749,11 +10751,13 @@ var require_types_cjs_development = __commonJS2({
10749
10751
  aad: mod2.string().optional(),
10750
10752
  recipients: JWERecipientValidator2.array().optional()
10751
10753
  });
10752
- var EncryptedCredentialRecordValidator2 = mod2.object({
10753
- encryptedRecord: JWEValidator2,
10754
- fields: mod2.string().array(),
10754
+ var EncryptedRecordValidator2 = mod2.object({ encryptedRecord: JWEValidator2, fields: mod2.string().array() }).catchall(mod2.any());
10755
+ var PaginatedEncryptedRecordsValidator2 = PaginationResponseValidator2.extend({
10756
+ records: EncryptedRecordValidator2.array()
10757
+ });
10758
+ var EncryptedCredentialRecordValidator2 = EncryptedRecordValidator2.extend({
10755
10759
  id: mod2.string()
10756
- }).catchall(mod2.any());
10760
+ });
10757
10761
  var PaginatedEncryptedCredentialRecordsValidator2 = PaginationResponseValidator2.extend({
10758
10762
  records: EncryptedCredentialRecordValidator2.array()
10759
10763
  });
@@ -14571,11 +14575,13 @@ var JWEValidator = mod.object({
14571
14575
  aad: mod.string().optional(),
14572
14576
  recipients: JWERecipientValidator.array().optional()
14573
14577
  });
14574
- var EncryptedCredentialRecordValidator = mod.object({
14575
- encryptedRecord: JWEValidator,
14576
- fields: mod.string().array(),
14578
+ var EncryptedRecordValidator = mod.object({ encryptedRecord: JWEValidator, fields: mod.string().array() }).catchall(mod.any());
14579
+ var PaginatedEncryptedRecordsValidator = PaginationResponseValidator.extend({
14580
+ records: EncryptedRecordValidator.array()
14581
+ });
14582
+ var EncryptedCredentialRecordValidator = EncryptedRecordValidator.extend({
14577
14583
  id: mod.string()
14578
- }).catchall(mod.any());
14584
+ });
14579
14585
  var PaginatedEncryptedCredentialRecordsValidator = PaginationResponseValidator.extend({
14580
14586
  records: EncryptedCredentialRecordValidator.array()
14581
14587
  });
@@ -14778,7 +14784,7 @@ var getLearnCloudClient = /* @__PURE__ */ __name(async (url, learnCard) => {
14778
14784
  return jwt;
14779
14785
  });
14780
14786
  }, "getLearnCloudClient");
14781
- var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url, unencryptedFields = []) => {
14787
+ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url, unencryptedFields = [], unencryptedCustomFields = []) => {
14782
14788
  let learnCard = initialLearnCard;
14783
14789
  learnCard.debug?.("Adding LearnCloud Plugin");
14784
14790
  let client = await getLearnCloudClient(url, learnCard);
@@ -14804,7 +14810,166 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url, u
14804
14810
  name: "LearnCloud",
14805
14811
  displayName: "LearnCloud",
14806
14812
  description: "LearnCloud Integration",
14807
- methods: {},
14813
+ methods: {
14814
+ learnCloudCreate: async (_learnCard, document) => {
14815
+ await updateLearnCard(_learnCard);
14816
+ const item = await generateEncryptedRecord(
14817
+ _learnCard,
14818
+ document,
14819
+ unencryptedCustomFields
14820
+ );
14821
+ return client.customStorage.create.mutate({
14822
+ item: await generateJWE(_learnCard, learnCloudDid, item)
14823
+ });
14824
+ },
14825
+ learnCloudCreateMany: async (_learnCard, documents) => {
14826
+ await updateLearnCard(_learnCard);
14827
+ const items = await Promise.all(
14828
+ documents.map(
14829
+ async (document) => generateEncryptedRecord(_learnCard, document, unencryptedCustomFields)
14830
+ )
14831
+ );
14832
+ return client.customStorage.createMany.mutate({
14833
+ items: await generateJWE(_learnCard, learnCloudDid, items)
14834
+ });
14835
+ },
14836
+ learnCloudRead: async (_learnCard, query, includeAssociatedDids) => {
14837
+ await updateLearnCard(_learnCard);
14838
+ const documents = [];
14839
+ let result = await _learnCard.invoke.learnCloudReadPage(
14840
+ query,
14841
+ {},
14842
+ includeAssociatedDids
14843
+ );
14844
+ documents.push(...result.records);
14845
+ while (result.hasMore) {
14846
+ result = await _learnCard.invoke.learnCloudReadPage(
14847
+ query,
14848
+ {},
14849
+ includeAssociatedDids
14850
+ );
14851
+ documents.push(...result.records);
14852
+ }
14853
+ return documents;
14854
+ },
14855
+ learnCloudReadPage: async (_learnCard, query, paginationOptions, includeAssociatedDids) => {
14856
+ await updateLearnCard(_learnCard);
14857
+ if (!query) {
14858
+ const jwe2 = await client.customStorage.read.query({
14859
+ includeAssociatedDids,
14860
+ ...paginationOptions
14861
+ });
14862
+ const encryptedRecords2 = isEncrypted(jwe2) ? await decryptJWE(_learnCard, jwe2) : jwe2;
14863
+ return {
14864
+ ...encryptedRecords2,
14865
+ records: await Promise.all(
14866
+ encryptedRecords2.records.map(async (record) => ({
14867
+ ...await decryptJWE(
14868
+ _learnCard,
14869
+ record.encryptedRecord
14870
+ ),
14871
+ _id: record._id
14872
+ }))
14873
+ )
14874
+ };
14875
+ }
14876
+ const fields = await generateEncryptedFieldsArray(_learnCard, query, [
14877
+ ...unencryptedCustomFields,
14878
+ "_id"
14879
+ ]);
14880
+ const unencryptedEntries = Object.fromEntries(
14881
+ Object.entries(query).filter(
14882
+ ([key]) => [...unencryptedCustomFields, "_id"].includes(key)
14883
+ )
14884
+ );
14885
+ const jwe = await client.customStorage.read.query({
14886
+ query: await generateJWE(_learnCard, learnCloudDid, {
14887
+ ...unencryptedEntries,
14888
+ ...fields.length > 0 ? { fields: { $in: fields } } : {}
14889
+ }),
14890
+ ...paginationOptions,
14891
+ includeAssociatedDids
14892
+ });
14893
+ const encryptedRecords = isEncrypted(jwe) ? await decryptJWE(_learnCard, jwe) : jwe;
14894
+ return {
14895
+ ...encryptedRecords,
14896
+ records: await Promise.all(
14897
+ encryptedRecords.records.map(async (record) => ({
14898
+ ...await decryptJWE(
14899
+ _learnCard,
14900
+ record.encryptedRecord
14901
+ ),
14902
+ _id: record._id
14903
+ }))
14904
+ )
14905
+ };
14906
+ },
14907
+ learnCloudCount: async (_learnCard, query, includeAssociatedDids) => {
14908
+ await updateLearnCard(_learnCard);
14909
+ if (!query)
14910
+ return client.customStorage.count.query({ includeAssociatedDids });
14911
+ const fields = await generateEncryptedFieldsArray(_learnCard, query, [
14912
+ ...unencryptedCustomFields,
14913
+ "_id"
14914
+ ]);
14915
+ const unencryptedEntries = Object.fromEntries(
14916
+ Object.entries(query).filter(
14917
+ ([key]) => [...unencryptedCustomFields, "_id"].includes(key)
14918
+ )
14919
+ );
14920
+ return client.customStorage.count.query({
14921
+ query: await generateJWE(_learnCard, learnCloudDid, {
14922
+ ...unencryptedEntries,
14923
+ ...fields.length > 0 ? { fields: { $in: fields } } : {}
14924
+ }),
14925
+ includeAssociatedDids
14926
+ });
14927
+ },
14928
+ learnCloudUpdate: async (_learnCard, query, update) => {
14929
+ await updateLearnCard(_learnCard);
14930
+ const documents = await _learnCard.invoke.learnCloudRead(query);
14931
+ const updates = await Promise.all(
14932
+ documents.map(
14933
+ async (document) => client.customStorage.update.mutate({
14934
+ query: await generateJWE(_learnCard, learnCloudDid, {
14935
+ _id: document._id
14936
+ }),
14937
+ update: await generateJWE(
14938
+ _learnCard,
14939
+ learnCloudDid,
14940
+ await generateEncryptedRecord(
14941
+ _learnCard,
14942
+ { ...document, ...update },
14943
+ unencryptedCustomFields
14944
+ )
14945
+ )
14946
+ })
14947
+ )
14948
+ );
14949
+ return updates.reduce((sum, current) => current + sum, 0);
14950
+ },
14951
+ learnCloudDelete: async (_learnCard, query, includeAssociatedDids) => {
14952
+ await updateLearnCard(_learnCard);
14953
+ if (!query)
14954
+ return client.customStorage.delete.mutate({ includeAssociatedDids });
14955
+ const fields = await generateEncryptedFieldsArray(_learnCard, query, [
14956
+ ...unencryptedCustomFields,
14957
+ "_id"
14958
+ ]);
14959
+ const unencryptedEntries = Object.fromEntries(
14960
+ Object.entries(query).filter(
14961
+ ([key]) => [...unencryptedCustomFields, "_id"].includes(key)
14962
+ )
14963
+ );
14964
+ return client.customStorage.delete.mutate({
14965
+ query: await generateJWE(_learnCard, learnCloudDid, {
14966
+ ...unencryptedEntries,
14967
+ ...fields.length > 0 ? { fields: { $in: fields } } : {}
14968
+ }),
14969
+ includeAssociatedDids
14970
+ });
14971
+ }
14972
+ },
14808
14973
  read: {
14809
14974
  get: async (_learnCard, uri) => {
14810
14975
  if (!uri)
@@ -14888,7 +15053,7 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url, u
14888
15053
  const jwe = await client.index.get.query({
14889
15054
  query: await generateJWE(_learnCard, learnCloudDid, {
14890
15055
  ...unencryptedEntries,
14891
- fields: { $in: fields }
15056
+ ...fields.length > 0 ? { fields: { $in: fields } } : {}
14892
15057
  }),
14893
15058
  ...paginationOptions
14894
15059
  });
@@ -14934,7 +15099,7 @@ var getLearnCloudPlugin = /* @__PURE__ */ __name(async (initialLearnCard, url, u
14934
15099
  const jwe = await client.index.count.query({
14935
15100
  query: await generateJWE(_learnCard, learnCloudDid, {
14936
15101
  ...unencryptedEntries,
14937
- fields: { $in: fields }
15102
+ ...fields.length > 0 ? { fields: { $in: fields } } : {}
14938
15103
  })
14939
15104
  });
14940
15105
  _learnCard.debug?.("LearnCloud index.count (query response)", jwe);